var home = "Home sweet home";
如何找到第二个e
的索引,因为home.indexOf("ee")
和home.lastIndexOf("ee")
都返回7
。如果JS将ee
作为一个单位并返回其“&#39}”。 index,为什么它不能返回lastIndexOf那个单位?
答案 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;