如何从第三个“/”之后获取字符串

How do i get the string from after the third "/"

本文关键字:之后 字符串 获取 三个      更新时间:2023-09-26
编程

的新手,请原谅这个愚蠢的问题。我有这个网址 http://www.blahblah.com/some/thing/blah..

现在我需要出现在第三个"/"之后的字符串,即只是"/some/thing"..我不想反向进行,因为每个页面的 URL 都不同,但协议和主机名是相同的。有没有办法让我使用 Javascript 提取"/some/thing"。感谢任何帮助..谢谢!!

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

或者更复杂的是:

var string = "/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]

使用 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

玩得开心!:)

顺便一提。。。如果你是Web开发的新手,www.w3schools.com 对我非常好:)

因此,要响应您的编辑,您需要执行以下操作:

假设上面已经:

alert(arrayOfString.slice(3).join("/"));
好的,根据

这里的实际需要修复了它..但就像我说的,看看它真的教会了我一些很好的基础知识 http://www.w3schools.com。

要修复注释中的失败情况,请在拆分/切片/连接之前执行此操作:

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

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

在第三个"/"之后获取东西的一种方法是将其与之前的所有内容一起扔掉

基本思路:

"/a/b/c/d/e/f".replace(/.*?'/.*?'/s.*?'//, "")
// -> "c/d/e/f"

替代方案 #1,以减少重复:

"/a/b/c/d/e/f".replace(/(?:.*?'/){3}/, "")     

替代 #2,如果输入可以包含换行符:

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

*?限定词的意思是"不要贪婪",所以.不会跳过/的。在否定字符类的情况下不需要它,因为[^'/]永远不会匹配/

这当然可以用"不太通用"的形式编写,因为真正的意图只是为了摆脱URI的协议/域部分(/的数量只是一个观察到的关系):

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

请注意,最后一个'/后面有一个?,因此它将返回"http://foo"的",并且i是这样,如果出于某种奇怪的原因使用它,它将匹配HTTP://(当然,完全可选)。

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

祝您编码愉快!


注意:上述所有正则表达式都将提取第 3 / 之后的内容,如问题中所述。它们需要稍作修改,以结果中包含第 3 /。此外,不问 X-Y 问题也有帮助。

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

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

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