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

JavaScript indexOf() - how to get specific index

本文关键字:索引 何获得 indexOf JavaScript      更新时间:2023-09-26

假设我有一个URL:

http://something.com/somethingheretoo

我想要得到/的第三个实例之后是什么?

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

如果您知道它以http://https://开头,请使用一行代码:

跳过该部分。
var content = aURL.substring(aURL.indexOf('/', 8));

这给你更多的灵活性,如果有多个斜杠在你想要的段

let s = 'http://something.com/somethingheretoo';
parts = s.split('/');
parts.splice(0, 2);
return parts.join('/');

试试下面的函数,它将返回搜索字符串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中。原型,你可以把它作为一个独立的函数,通过添加另一个参数来传递你想要搜索的字符串。

如果你想坚持使用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];

这个正则搜索"//",接受"//"和下一个"/"之间的任何值,并返回一个对象。这个对象有几个属性。属性[1]包含第三个/之后的子字符串。

另一种方法是使用Javascript的"split"函数:

var strWord = "me/you/something";
var splittedWord = strWord.split("/");

splittedWord[0]将返回"me"

splittedWord[1]将返回"you"

splittedWord[2]将返回"something"

听起来你想要pathname。如果你是在浏览器中,保持一个a元素方便…

var _a = document.createElement('a');

…让它为你做解析。

_a.href = "http://something.com/somethingheretoo";
alert( _a.pathname.slice(1) );  // somethingheretoo
演示:

http://jsfiddle.net/2qT9c/

在您的示例中,您可以使用lastIndexOf()方法来获取第三个正斜杠

这里有一个非常酷的处理方法:我如何删除字符串中的所有字符,包括第3个斜杠?

我最喜欢的解决方案是

var url = "http://blablab/test/page.php";
alert(url.split("/")[3]);
//-> "test"

可以这样做,而不是使用indexOf:

const url = 'http://something.com/somethingheretoo';
const content = new URL(url).pathname.slice(1);