2017-05-26 65 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));