Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти позицию подстроки

Короткий ответ

indexOf() возвращает позицию первого совпадения, считая с нуля, или -1, если ничего не найдено:

const text = 'hello world';
 
console.log(text.indexOf('o'));
console.log(text.indexOf('x'));

Результат:

4
-1

Последнее совпадение

lastIndexOf() ищет с конца:

console.log('hello world'.lastIndexOf('o'));

Результат:

7

Все позиции

Второй аргумент indexOf() задаёт, откуда начинать поиск. Цикл находит все совпадения:

const text = 'banana';
const positions = [];
let index = text.indexOf('a');
 
while (index !== -1) {
  positions.push(index);
  index = text.indexOf('a', index + 1);
}
 
console.log(positions.join(', '));

Результат:

1, 3, 5

С регулярным выражением

search() работает как indexOf(), но принимает шаблон:

console.log('Room 42'.search(/\d/));

Результат:

5

Частая ошибка

Позиция 0 — правильный результат, но она ложна. Всегда сравнивайте с -1:

const text = 'apple pie';
 
console.log(text.indexOf('apple') ? 'found' : 'not found');
console.log(text.indexOf('apple') !== -1 ? 'found' : 'not found');

Результат:

not found
found

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.