Как заменить все вхождения строки в JavaScript

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


Использование регулярного выражения

Это простое регулярное выражение выполнит задачу:

String.replace(/<TERM>/g, '')

Это выполняетчувствительный к региструподмена.

Вот пример, где я заменяю все вхождения слова «собака» в строкуphrase:

const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/g, '')

stripped //“I love my ! Dogs are great”

Чтобы выполнить замену без учета регистра, используйтеiопция в регулярном выражении:

String.replace(/<TERM>/gi, '')

Пример:

const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/gi, '')

stripped //“I love my ! s are great”

Помните, что если строка содержит некоторые специальные символы, она не будет хорошо работать с регулярными выражениями, поэтому рекомендуется экранировать строку с помощью этой функции (взято изMDN):

const escapeRegExp = (string) => {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\{{content}}amp;')
}

Использование split and join

Альтернативное решение, хотя и более медленное, чем регулярное выражение, использует две функции JavaScript.

Первый - этоsplit(), который обрезает строку при нахождении шаблона (с учетом регистра) и возвращает массив с токенами:

const phrase = 'I love my dog! Dogs are great'
const tokens = phrase.split('dog')

tokens //["I love my ", “! Dogs are great”]

Затем вы объединяете токены в новую строку, на этот раз без разделителя:

const stripped = tokens.join('') //"I love my ! Dogs are great"

Подведение итогов:

const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.split('dog').join('')

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по js: