2015-07-07 3 views
0

Это проект курса для простого счетчика поиска для слова «Wrox» в строке.Сброс счетчика циклов до -1

Мой код:

var myString = "Welcome to Wrox books. "; 
myString = myString + "The Wrox website is www.wrox.com. "; 
mystring = myString + "Visit the Wrox website today. Thanks for buying Wrox. "; 

var i = 0; 
var wroxCount = 0; 

while (i <= myString.length) { 
    i = myString.indexOf("Wrox",i); 
    wroxCount++; 
    i++; 
} 

Он отлично работает до тех пор, пока i решает сбросить в -1 по какой-то причине. Он работает, пока он внезапно этого не сделает. Я не знаю, что я делаю неправильно.

+6

Поскольку 'indexOf' возвращает' -1', если все, что вы ищете, не существует. поэтому, как только вы найдете LAST 'Wrox' в своей строке, очевидно, что больше нет Wroxes за этот момент, и вы получите -1. поэтому вы найдете wrox # 1, # 2, ... #n, тогда вы вернетесь к индексу 0 и сканируете строку снова и снова ... –

ответ

1

String.indexOf возвращает -1, когда подстрока, которую вы ищете, не найдена в строке.

Это то, что вы должны проверить в своем состоянии, а не i <= myString.length, потому что если i положителен, подстрока была найдена внутри строки, поэтому индекс меньше длины.

i = myString.indexOf('Wrox'); 
while (i > 0) { 
    wroxCount++; 
    i = myString.indexOf('Wrox', i + 1); 
} 
+0

Я этого не знал. Спасибо! – xa3d

+1

@ xa3d Добро пожаловать! Пожалуйста, не забудьте оставить полезные ответы и в конечном счете [принять ответ] (http://meta.stackexchange.com/a/5235/141542), которые решили вашу проблему, чтобы пометить ваши вопросы как разрешенные. И здесь, и по [вашему другому вопросу] (http://stackoverflow.com/questions/30791009/why-am-i-pulling-an-error-array-push-course-work). Благодаря :) – poke

Смежные вопросы