Метод String indexOf() в JavaScript

В этом руководстве вы узнаете, как использовать метод JavaScript String indexOf() для поиска индекса подстроки в строке.

String.prototype.indexOf() возвращает индекс первого вхождения подстроки( substr ) в строке( str ):

let index = str.indexOf(substr, [, fromIndex]);

Он возвращает -1, если str не содержит substr.

fromIndex — необязательный параметр, указывающий индекс, с которого начинается поиск. По умолчанию он равен нулю(0), что означает, что если вы опустите fromIndex, поиск начнется с начала строки.

indexOf() всегда выполняет поиск с учетом регистра.

Чтобы найти индекс последнего вхождения подстроки в строку, используйте метод lastIndexOf().

Примеры

Пример метода JavaScript Array indexOf

Давайте рассмотрим несколько примеров использования метода indexOf().

1) Пример использования

В следующем примере используется indexOf() для получения индекса первого вхождения подстроки ‘str’ в строке ‘finding substring in string’; :

let str = 'finding substring in string';
let index = str.indexOf('str');

console.log(index); // 11

2) Использование 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
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript