2016-03-16 4 views
-2

Если вы хотите подсчитать количество вхождений одной строки внутри другой, какой подход лучше с точки зрения простоты и/или производительности? -Подсчет подсписок

  • с использованием indexOf в for/while петли
  • с помощью регулярного выражения

И если это последнее, то, что это лучший способ сделать это?

+1

@ Vitaly-т Реализовать [алгоритм Кнута-Морриса-Пратта] (https://en.wikipedia.org/wiki/Knuth% E2% 80% 93Morris% E2% 80% 93Pratt_algorithm), если производительность жизненно важна. – tchelidze

+0

@ user340764, который отвечает на вопрос, действительно, спасибо. Я, вероятно, должен просто удалить его? –

+0

@ vitaly-t, если вам нужно удалить строку после поиска их индексов, [this] (http://stackoverflow.com/questions/2295657/return-positions-of-a-regex-match-in-javascript) ссылка может быть быть полезным. – Bunti

ответ

1

Попробуйте следующее регулярное выражение:

var temp = "This is a string."; 
 

 
var count = (temp.match(/is/g) || []).length; 
 
alert(count);

+0

Это хорошо, но я хотел знать, какой путь лучше. Эта ссылка, предоставленная ранее, полностью отвечает на нее: http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string –