使用indexOf与while循环混淆

时间:2017-12-12 21:29:08

标签: javascript algorithm loops while-loop 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索引处。那么,循环如何从第一个结果中跳过单词并移动到下一个结果?

2 个答案:

答案 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,因此下次搜索移动到当前位置时。