假设我有一个网址:
http://something.com/somethingheretoo
我希望得到/
的第3个实例之后的内容?
类似于indexOf()
的东西,它允许我输入我想要的反斜杠的哪个实例。
答案 0 :(得分:6)
如果您知道它以http://
或https://
开头,只需使用此单行跳过该部分:
var content = aURL.substring(aURL.indexOf('/', 8));
如果您想要的段中有多个斜杠,这将为您提供更大的灵活性。
答案 1 :(得分:3)
s = 'http://something.com/somethingheretoo';
parts = s.split('/');
parts = parts.slice(0, 2);
return parts.join('/');
答案 2 :(得分:1)
如果你想坚持indexOf
:
var string = "http://something/sth1/sth2/sth3/"
var lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
string = string.substr(lastIndex);
如果您想获得该给定URL的路径,您还可以使用RE:
string = string.match(/\/\/[^\/]+\/(.+)?/)[1];
此RE搜索“//
”,接受“//
”与下一个“/
”之间的任何内容,并返回一个对象。该对象具有多个属性。 propery [1]
包含第三个/
之后的子字符串。
答案 3 :(得分:1)
另一种方法是使用Javascript“拆分”功能:
var strWord = "me/you/something";
var splittedWord = strWord.split("/");
splittedWord [0]会返回“我”
splittedWord [1]会返回“你”
splittedWord [2]会返回“某事”
答案 4 :(得分:1)
听起来你想要pathname
。如果您使用的是浏览器,请随身携带a
元素...
var _a = document.createElement('a');
...让它为你解析。
_a.href = "http://something.com/somethingheretoo";
alert( _a.pathname.slice(1) ); // somethingheretoo
答案 5 :(得分:0)
在您的情况下,您可以使用lastIndexOf()
方法获得第3个正斜杠。
答案 6 :(得分:0)
尝试类似下面的函数,它将返回搜索字符串s第n次出现的索引,如果有n-1或更少的匹配则返回-1。
String.prototype.nthIndexOf = function(s, n) {
var i = -1;
while(n-- > 0 && -1 != (i = this.indexOf(s, i+1)));
return i;
}
var str = "some string to test";
alert(str.nthIndexOf("t", 3)); // 15
alert(str.nthIndexOf("t", 7)); // -1
alert(str.nthIndexOf("z", 4)); // -1
var sub = str.substr(str.nthIndexOf("t",3)); // "test"
当然,如果您不想将该函数添加到String.prototype,可以通过添加另一个参数传递要搜索的字符串,将其作为独立函数。
答案 7 :(得分:0)
这是处理这个问题的一种非常酷的方式: How can I remove all characters up to and including the 3rd slash in a string?
我对提议的解决方案的偏好是
var url = "http://blablab/test/page.php";
alert(url.split("/")[3]);
//-> "test"
答案 8 :(得分:0)
代替使用 indexOf
,可以这样做:
const url = 'http://something.com/somethingheretoo';
const content = new URL(url).pathname.slice(1);