2016-08-24 49 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]

這應該給你的文件名從

相關問題