В этом руководстве вы узнаете, как использовать метод JavaScript String indexOf() для поиска индекса подстроки в строке.
String.prototype.indexOf() возвращает индекс первого вхождения подстроки( substr ) в строке( str ):
let index = str.indexOf(substr, [, fromIndex]);
Он возвращает -1, если str не содержит substr.
fromIndex — необязательный параметр, указывающий индекс, с которого начинается поиск. По умолчанию он равен нулю(0), что означает, что если вы опустите fromIndex, поиск начнется с начала строки.
indexOf() всегда выполняет поиск с учетом регистра.
Чтобы найти индекс последнего вхождения подстроки в строку, используйте метод lastIndexOf().
Примеры

Давайте рассмотрим несколько примеров использования метода indexOf().
1) Пример использования
В следующем примере используется indexOf() для получения индекса первого вхождения подстроки ‘str’ в строке ‘finding substring in string’; :
let str = 'finding substring in string';
let index = str.indexOf('str');
console.log(index); // 112) Использование indexOf() для подсчета вхождений подстроки в строку
В следующем примере используется метод indexOf() для подсчета количества вхождений подстроки ‘know’ в строке ‘You do not know what you do not know until you know.’ :
let str = 'You do not know what you do not know until you know.';
let substr = 'know';
let count = 0;
let index = str.indexOf(substr);
while(index !== -1) {
count++;
index = str.indexOf(substr, index + 1);
}
console.log(count);Как это работает:
- Во-первых, используйте метод
indexOf(), чтобы найти первое вхождениеsubstrвstr. - Затем используйте цикл
while, чтобы повторно найти следующую позициюsubstrвstr, начиная с последней найденной позиции + 1.
3) Метод indexOf() и чувствительность к регистру
indexOf() чувствителен к регистру. См. следующий пример:
let str = 'JS indexOf'; let substr = 'js'; let index = str.indexOf(substr); console.log(index); // -1
В этом примере indexOf() возвращает -1, потому что строка JS IndexOf содержит не js, а подстроку JS.
Чтобы выполнить нечувствительный к регистру поиск индекса подстроки в строке, вы можете преобразовать и подстроку, и строку в нижний регистр перед использованием indexOf() следующим образом:
let str = 'JS indexOf'; let substr = 'js'; let index = str.toLocaleLowerCase().indexOf(substr.toLocaleLowerCase()); console.log(index); // 0
