В этом руководстве вы узнаете, как использовать метод 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); // 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