@hax
junior developer

Как найти все индексы вхождения подстроки?

Привет!
Есть ли готовы методы для нахождения всех вхождений подстроки в строке? Метод indexOf для строки вернёт только первое вхождение, а мне нужно найти все индексы подстроки в строке.
Например в строке "abc bca abcabc cba" подстрока "abc встречается 3 раза, индексы - 0, 8, 11, мне нужен метод, который вернёт в виде массива все индексы.
  • Вопрос задан
  • 4641 просмотр
Решения вопроса 1
AngReload
@AngReload
Кратко о себе
У этого метода есть второй параметр — с какого индекса вести поиск. Так что можно сделать функцию:
function getListIdx(str, substr) {
  let listIdx = []
  let lastIndex = -1
  while ((lastIndex = str.indexOf(substr, lastIndex + 1)) !== -1) {
    listIdx.push(lastIndex)
  }
  return listIdx
}
getListIdx('abc bca abcabc cba', 'abc') // [ 0, 8, 11 ]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы