2017-05-26 64 views
1

它沒有在stackoverflow片段上工作,但如果你嘗試在你的本地你會看到它會工作。如何從split拆分路徑中獲取字符串?

JS給我一個這樣的結果

cdn=//cdn.files.com/web 

,但我不希望這條線

cdn= 

JS必須從cdn=後給我,我的意思是結果必然是這樣

//cdn.files.com/web 

我的所有js都在下面,所以怎麼做?

var scripts = document.getElementsByTagName('script'); 
 
var index = scripts.length - 1; 
 
var myScript = scripts[index]; 
 
// myScript now contains our script object 
 
var queryString = myScript.src.replace(/^[^\=]+\??/,''); 
 

 
alert(decodeURIComponent(queryString));
<script src="//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb"></script> 
 

 
<p></p>

+0

爲什麼你不能使用'^。+?cdn ='在你的正則表達式? 'var queryString = myScript.src.replace(/^.+?cdn = /,'');'這會給你''cdn =' –

回答

2

 var s = "cdn=//cdn.files.com/web"; 
 
     
 
     s2 = s.substring(s.indexOf("cdn=")+4,s.length); 
 
    
 
     alert(s2);

這會從旁邊的指數串等於字符字符串你:)

固定的結束和測試

+0

真的很棒謝謝 –

+0

@ani_css你能設置一個答案作爲最佳答案嗎?我是新來的社區 –

2

拆分通過'?cdn='字符串和獲取後的部分(結果陣列中第二元件,在索引1)。

var queryString = myScript.src.split('?cdn=')[1]; 

FYI:如果只有一個網址PARAM那麼你可以簡單地使用=cdn=的分裂。

+0

之後的字符串非常好用我想我們可以使用像這樣='split('=')[1];'我的意思是來自'='它也是這樣工作,但可以是任何問題? –

+1

@ani_css:它會工作...萬一如果有多個網址參數可能會導致問題 –

1

您可以使用split

yourvariable.split('='); 

所以無論你的參數變成GET,odd param都會得到你想要的結果。

PS:更喜歡= char,因爲你可以使用你想要的任何參數進入src鏈接。

1

用正則表達式解決方案

var src = 'cdn=//cdn.files.com/web'; 
 
var url = src.replace(/^([^\=]+=)(.*)$/, '$2'); 
 
console.log(decodeURIComponent(url));

DEMO與解釋

+0

讓我知道它是否有幫助 – MaxZoom

1

你爲什麼不能在你的正則表達式使用^.+?cdn=

這會給你字符串後cdn=

var myScript = '//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb'; 
 
var queryString = myScript.replace(/^.+?cdn=/, ''); 
 
console.log(decodeURIComponent(queryString));