使用 indexOf 与 while 循环混淆
Confusion with while loop using indexOf
var myString = "Welcome to Example books. The Example website is www.example.com. Visit the Example website today. Thanks for buying Example";
var foundAtPosition = 0;
var exampleCount = 0;
while (foundAtPosition != -1) {
foundAtPosition = myString.indexOf("Example", foundAtPosition);
if (foundAtPosition != -1) {
exampleCount++;
foundAtPosition++;
}
}
对于上面的代码,我对循环起点的工作方式有点困惑。如果您看一下,您会看到 foundAtPosition
用作 indexOf()
函数的起点。但是在第一个循环之后
indexOf()
函数将以 foundAtPosition
值作为起点,它是 6
,而 "Example"
单词再次在 0
的索引处找到。那么,循环如何跳过第一个结果中的单词并移动到下一个?
myString.indexOf("Example", foundAtPosition);
查找第一个不在 foundAtPosition
.
之前的 "Example"
而这个街区,
if (foundAtPosition != -1) {
exampleCount++;
foundAtPosition++;
}
递增 foundAtPosition,以便下次搜索向右移动到当前位置。
在第一个循环之后,indexOf()
函数将使用 11 而不是 6。
这是循环:
foundAtPosition:11 / exampleCount:0
foundAtPosition:27 / exampleCount:1
foundAtPosition:67 / exampleCount:2
foundAtPosition:105 / exampleCount:3
foundAtPosition:-1 / exampleCount:4
如您所见,indexOf()
函数将搜索字符串的剩余部分,每次在字符 11、27、67、105 之后都会停止。
var myString = "Welcome to Example books. The Example website is www.example.com. Visit the Example website today. Thanks for buying Example";
var foundAtPosition = 0;
var exampleCount = 0;
while (foundAtPosition != -1) {
foundAtPosition = myString.indexOf("Example", foundAtPosition);
if (foundAtPosition != -1) {
exampleCount++;
foundAtPosition++;
}
}
对于上面的代码,我对循环起点的工作方式有点困惑。如果您看一下,您会看到 foundAtPosition
用作 indexOf()
函数的起点。但是在第一个循环之后
indexOf()
函数将以 foundAtPosition
值作为起点,它是 6
,而 "Example"
单词再次在 0
的索引处找到。那么,循环如何跳过第一个结果中的单词并移动到下一个?
myString.indexOf("Example", foundAtPosition);
查找第一个不在 foundAtPosition
.
"Example"
而这个街区,
if (foundAtPosition != -1) {
exampleCount++;
foundAtPosition++;
}
递增 foundAtPosition,以便下次搜索向右移动到当前位置。
在第一个循环之后,indexOf()
函数将使用 11 而不是 6。
这是循环:
foundAtPosition:11 / exampleCount:0
foundAtPosition:27 / exampleCount:1
foundAtPosition:67 / exampleCount:2
foundAtPosition:105 / exampleCount:3
foundAtPosition:-1 / exampleCount:4
如您所见,indexOf()
函数将搜索字符串的剩余部分,每次在字符 11、27、67、105 之后都会停止。