Javascript中的indexOf和lastIndexOf

时间:2016-11-04 11:35:25

标签: javascript object

var home = "Home sweet home";

如何找到第二个e的索引,因为home.indexOf("ee")home.lastIndexOf("ee")都返回7。如果JS将ee作为一个单位并返回其“&#39}”。 index,为什么它不能返回lastIndexOf那个单位?

3 个答案:

答案 0 :(得分:3)

lastIndexOf返回子字符串中第一个字符的索引,其中子字符串最后出现在超级字符串中。

var home = "Home sweet sweet home";
//                       ^ Matches here
console.log(home.lastIndexOf("ee"));

要找到第二个e,当它构成字符串ee的一部分时,请使用indexOf,然后添加1(您知道ee的第二个字符是1个字符超过子字符串的第一个字符,所以你知道要添加那么多,如果你想要子字符串的最后一个字符,那么你可以使用子字符串的.length来计算它。

var home = "Home sweet home";
//                  ^ Matches here
console.log(home.indexOf("ee") + 1);

要找到第二个e,它可能会或可能不会成为字符串ee的一部分,请使用indexOf查找第一个e,然后再次使用它在第一个e之后传递字符的索引作为第二个参数。

var home = "The fox ate the chicken";
//            ^       ^ Matches in these places
var first_index = home.indexOf("e");
var second_index = home.indexOf("e", first_index + 1);
console.log(first_index, second_index);

答案 1 :(得分:0)

索引始终从左侧开始。 lastIndexOf查找搜索到的文本的最后一次出现(或者您可能会说单位),并返回该单位开始的索引(从左侧开始)。这两个函数都返回相同的索引,因为只有一次搜索字符串“ee”。如果主变量有另一个“ee”,那么你会得到不同的结果。请考虑以下示例:

var home = "Home sweet, sweet home";
home.indexOf("ee"); // will return 7
home.lastIndexOf("ee") // will return 14

希望这可以解决你的困惑

答案 2 :(得分:0)

这两种方法都会返回您要查找的字符串的“起始”索引。

如Java文档中所述:java.lang.String.lastIndexOf(java.lang.String)

  

返回的索引是最小值k,其中:

     

this.startsWith(str,k)

因此,如果你想找到你正在寻找的任何字符串的结束索引,有一个简单的方法:

var searchedStr = "ee";
var home = "Home sweet home";
var endIndex = home.lastIndexOf(searchedStr) + searchedStr.length - 1;