是否有可能获得字符串的这一部分

时间:2016-08-24 14:52:03

标签: javascript

我想知道是否可以获得字符串的这一部分。 这是我的字符串:

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。

5 个答案:

答案 0 :(得分: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));




答案 1 :(得分: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"

答案 2 :(得分:1)

假设您总是有一个网址,首先我会通过以下方式解码编码的/%2F)字符:

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(/[^/]*(?=[?])/)

请注意,这个正则表达式假定参数(以?...开头的部分)存在,所以如果不是这样,您可能需要根据需要进行更改。

答案 3 :(得分: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("?"))

答案 4 :(得分:0)

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

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

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

然后,我们需要在“?”之后摆脱一切:

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

这应该为您提供URL

中的文件名