2012-06-15 38 views
1

完全不熟悉编程,所以请原谅这个愚蠢的问题。 我有这个URL http://www.blahblah.com/some/thing/blah ..如何从第三个“/”后获得字符串

现在我需要我不想从反向去了第三个“/”,即,只是“/一些/事情”后出现的字符串.. 的URL是不同的对于每个页面,但协议和主机名是相同的。 有没有一种方法可以沿着使用Javascript提取“/ some/thing”.. 欣赏任何帮助.. Thanks!

+0

使用拆分方法 http://stackoverflow.com/questions/96428/how-do-i-split-this-string-with-javascript –

回答

0

我会在这里使用一个简单的正则表达式。之前

一种方式得到的东西之后的第三个“/”只把它扔掉一切。

基本思想:

"https://stackoverflow.com/a/b/c/d/e/f".replace(/.*?\/.*?\/s.*?\//, "") 
// -> "c/d/e/f" 

备选#1,以减少重复:

"https://stackoverflow.com/a/b/c/d/e/f".replace(/(?:.*?\/){3}/, "")  

备选#2,如果输入可包含换行符:

"https://stackoverflow.com/a/b/c/d/e/f".replace(/(?:[^\/]*\/){3}/, "") 

*?限定符装置“不要贪心”,所以.不会跳过/'s。这在负面字符类的情况下不需要,因为[^\/]永远不会匹配/

这当然可以写在一个“较少通用的”形式,因为由于真实意图仅仅是与git摆脱URI(的/的数量的协议/结构域的部分的仅是一个观察到的关系):

"http://foo/a/b/c/d/e/f".replace(/https?:\/\/[^\/]*\/?/i, "") 
// -> "a/b/c/d/e/f" 

注意最后\/?后它,所以它会返回“”为“HTTP://富”和i是这样,如果是使用一些奇怪的原因,它将匹配HTTP:// (当然是完全可选的)。

"HTTPS://foo".replace(/https?:\/\/[^\/]*\/?/i, "") 
// -> "" 

快乐编码!


注:以上所有的正则表达式将第三/后提取内容,如问题陈述。他们将需要稍微修改为,其中包括第三/的结果。另外,它不会提出X-Y问题。

+0

这看起来像一些硬核心编码..上帝!我还有很长的路要走。也会试试这个..非常感谢你! –

+0

我刚刚了解这些正则表达式,并发现他们可以如何准确:)谢谢你尝试过你并且工作得很好.. –

3
var part = string.split('/')[2] 

或更复杂的:

var string = "https://stackoverflow.com/a/b/c/d/e/d" 
var arr1 = string.split('/') 
var arr2 = [] 
for (i in arr1) 
{ 
    if (arr1[i].length > 0) 
    arr2.push(arr1[i]) 
} 
var part = arr2[2] 
+0

这将失败'/ a/b/c/d/e/d' – 2012-06-15 01:45:34

+0

现在正在处理第二个片段 – odiszapc

2

使用string.split方法: http://www.w3schools.com/jsref/jsref_split.asp

var str = "www.blah.com/blah/blah/thing/blah.php"; 
var arrayOfString = str.split("/"); 
alert(arrayOfString[2]); //coming back to do regex/substring for you 

有乐趣! :)

顺便说一句...如果你是新的网络开发,www.w3schools.com是非常好,我:)

所以您的编辑你需要做的是这样的回应:

假设上面已经:

alert(arrayOfString.slice(3).join("/")); 

确定固定的,根据这里的实际需求..但就像我说的,看看http://www.w3schools.com这真的教了我一些很好的基础。拆分/切片的前

固定在评论中失败的情况下做到这一点/加入:

if (str.substring(0,1) == "/"){ str = str.substring(1);}

+0

这将失败'/ a/b/c/d/e' – 2012-06-15 01:45:43

+0

谢谢!它的工作..将检查链接:) –

+0

@pst,我认为修复失败的情况下,让我知道如果你认为任何其他故障:) – Ryan

0
var str = 'http://www.blahblah.com/some/thing/blah' 
var afterThirdSlash = str.split('/').slice(3).join('/') 

split的返回数组这是对每/字符字符串分割。 slice从第四个元素开始选择数组的一部分(因为数组从零开始),因为它对应于第三个斜杠后面的部分。 join通过重新插入/将这些元素重新组合在一起。这是你想要的吗?

0

如果您知道网址以'http://www.blahblah.com/'开头,为什么不使用 url.substring(24)?

+0

我有两个UAT服务器和1个生产..老板想要通用;) –

相关问题