JavaScript indexOf() - 如何获取特定索引

时间:2011-09-27 13:49:55

标签: javascript indexof

假设我有一个网址:

http://something.com/somethingheretoo

我希望得到/的第3个实例之后的内容?

类似于indexOf()的东西,它允许我输入我想要的反斜杠的哪个实例。

9 个答案:

答案 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

DEMO: http://jsfiddle.net/2qT9c/

答案 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);