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
索引处。那么,循环如何从第一个结果中跳过单词并移动到下一个结果?
答案 0 :(得分:3)
在第一个循环之后,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之后它将停止。
答案 1 :(得分:1)
"Example"
查找foundAtPosition
之前的if (foundAtPosition != -1) {
exampleCount++;
foundAtPosition++;
}
的第一次出现。
这个街区,
location ~/project/(\S+)/(\S+)/(\S+) {
try_files $uri $uri/ /project/$1/api.php?p=$2&r=$3;
}
增加foundAtPosition,因此下次搜索移动到当前位置时。