2016-08-24 46 views
-1

我想知道是否有可能得到这部分的字符串。 这里是我的字符串:是否有可能得到这部分的字符串

var string = "www.somesite.com/o/images%2Fc834vePyJ3SFVk2iO4rU0ke1cSa2%2F12391381_10205760647243398_2385261683139818614_n.jpg?alt=media&token=7a692a38-6982-474f-bea5-459c987ae575"; 

现在我希望能够抓住字符串的只是这一部分,文件名:

12391381_10205760647243398_2385261683139818614_n.jpg 

我想:

var result = /[^/]*$/.exec(""+url+"")[0]; 

,但它会返回

user%2Fc834vePyJ3SFVk2iO4rU0ke1cSa2%2F12391381_10205760647243398_2385261683139818614_n.jpg?alt=media&token=4c92c4d7-8979-4478-a63d-ea190bec87cf 

我的正则表达式是错误的。

另一个是,文件扩展名可以是.png或jpg,所以它不固定为jpg。

+0

为什么你不希望使用分割标识符URL他们可以很方便 –

+0

对不起,我编辑的问题,我不知道我的分割标识符 –

+2

[你有什么试过不行](http://whathaveyoutried.com)? – ManoDestra

回答

2

你可以使用正则表达式来你想要的部分隔离:

这工作:

var string = "www.somesite.com/o/images%2Fc834vePyJ3SFVk2iO4rU0ke1cSa2%2F12391381_10205760647243398_2385261683139818614_n.jpg?alt=media&token=7a692a38-6982-474f-bea5-459c987ae575"; 
 
console.log((string.match(/[A-Za-z0-9_]+.(jpg|png|bmp)/))[0].substring(2));

+0

不错,但文件名可以是PNG或其他扩展名不固定到JPG –

+0

我编辑了我的答案:您可以指定接受这样的扩展名:'(jpg | png | bmp)'。 –

0

如果文件名总是有.jpg扩展名:

var url = decodeURIComponent(string); 
var filename = url.substring(url.lastIndexOf("/")+1, url.lastIndexOf(".jpg")) 

如果不是:

url = url.substring(url.lastIndexOf("/")+1) 
filename = url.substring(0,url.indexOf("?")) 
1

注意,可能取决于有多少URL字符串的变化进行调整:

var string = "www.somesite.com/o/images%2Fc834vePyJ3SFVk2iO4rU0ke1cSa2%2F12391381_10205760647243398_2385261683139818614_n.jpg?alt=media&token=7a692a38-6982-474f-bea5-459c987ae575"; 
 

 
var out = string.split('?')[0].split('%2F')[2]; 
 

 
console.log(out); // "12391381_10205760647243398_2385261683139818614_n.jpg"

1

假设,你总是有一个网址,我首先解码编码/%2F)characters via:

var string = "www.somesite.com/o/images%2Fc834vePyJ3SFVk2iO4rU0ke1cSa2%2F12391381_10205760647243398_2385261683139818614_n.jpg?alt=media&token=7a692a38-6982-474f-bea5-459c987ae575"; 
var decodedUrl = decodeURIComponent(string); 

,然后使用正则表达式:

decodedUrl.match(/[^/]*(?=[?])/) 

记住,此正则表达式假设参数(部分开始?...)都存在,所以如果不是这种情况,你可能需要它改变您的需求。

+0

感谢您的建设性贡献! – trincot

0

看看字符串,看起来文件名是第二次出现的“%2F”和第一次出现的“?”之间。在字符串中。

第一步是摆脱第二个“%2F”之前的字符串部分。这可以通过在每个“%2F”处分割字符串并获取结果数组中的第三个元素来完成。

var intermediate = string.split("%2F")[2]

然后,我们需要摆脱“?“:?!

var file_name = intermediate.split("?")[0]

这应该给你的文件名从

相关问题