Обнаружение множественных вхождений строк в JavaScript: подробное руководство

В JavaScript существуют различные методы поиска всех вхождений одной строки в другую строку. В этой статье блога будут рассмотрены несколько подходов, включая методы с примерами кода, которые помогут вам эффективно находить и извлекать все вхождения строк. К концу вы получите полное представление о различных методах, которые можно использовать в JavaScript для этой цели.

  1. Использование метода indexOf():
    Метод indexOf() возвращает индекс первого вхождения указанной строки в другую строку. Повторно используя этот метод, мы можем найти все вхождения.
function findAllOccurrences(str, target) {
  const occurrences = [];
  let index = str.indexOf(target);

  while (index !== -1) {
    occurrences.push(index);
    index = str.indexOf(target, index + 1);
  }

  return occurrences;
}
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const target = "ipsum";
const occurrences = findAllOccurrences(text, target);
console.log(occurrences); // Output: [6]
  1. Использование метода match() с регулярным выражением:
    Метод match() при использовании с регулярным выражением может найти все вхождения строки внутри другой строки. Используя флаг «g» (глобальный поиск), мы можем извлечь несколько вхождений.
function findAllOccurrences(str, target) {
  const regex = new RegExp(target, "g");
  return str.match(regex);
}
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const target = "ipsum";
const occurrences = findAllOccurrences(text, target);
console.log(occurrences); // Output: ["ipsum"]
  1. Использование метода Split():
    Метод Split() позволяет нам разбить строку на массив подстрок на основе указанного разделителя. Разделив исходную строку, используя целевую строку в качестве разделителя, мы можем определить количество вхождений.
function findAllOccurrences(str, target) {
  return str.split(target).length - 1;
}
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const target = "ipsum";
const occurrences = findAllOccurrences(text, target);
console.log(occurrences); // Output: 1
  1. Реализация алгоритма Бойера-Мура.
    Алгоритм Бойера-Мура — это мощный алгоритм сопоставления с образцом, который эффективно находит все вхождения одной строки в другую строку. Хотя его реализация более сложна, он обеспечивает отличную производительность для больших текстов и длинных шаблонов.

Пример кода для алгоритма Бойера-Мура: [Код не показан из-за его сложности. Пожалуйста, обратитесь к внешним ресурсам.]

В этой статье мы рассмотрели несколько методов JavaScript для поиска всех вхождений одной строки в другую строку. Мы рассмотрели методы использования indexOf(), match() с регулярными выражениями, Split() и даже представили мощный алгоритм Бойера-Мура. Выбрав соответствующий метод в соответствии с вашими конкретными требованиями, вы сможете эффективно находить и извлекать все вхождения строк в JavaScript.

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