Подсчет общего количества вхождения шаблона в строку

1

У меня есть строка caaab. Я хочу подсчитать общее количество появления шаблона aa в этой строке. Это должно быть два.

[c**aa**ab]
[ca**aa**b]

Я использую (caaab'.match(/aa/g)||[]).length но возвращается только 1 не 2.

Как это сделать в javascript. Любое решение.

  • 1
    Так что вы пробовали?
Теги:
pattern-matching
match

2 ответа

1

Вы можете положительно взглянуть на будущее, потому что он не использует недостающий шаг.

console.log(('caaab'.match(/a(?=a)/g) || []).length);
  • 0
    Вы также можете использовать положительный взгляд (?<=aa)
  • 2
    @ S.Walker, на самом деле не в javascript, потому что он не реализован.
Показать ещё 2 комментария
0

Трудная часть - это совпадение в шаблонах.

Если шаблон для поиска является фиксированной строкой, а не регулярным выражением, вы можете повторно вызвать indexOf, обновив индекс начала после каждого совпадения.

var count = function (s, t) {
  var count = 0, index = 0;
  while (true) {
    index = s.indexOf(t, index);
    if (index === -1) break;
    count++;
    index++;
  }
  return count;
}

При этой реализации count('caaab', 'aa') вернет 2.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню