54

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

25

Проблема с удалением всех вхождений подстроки в строке

У меня есть следующая строка:

string = "Test abc test test abc test test test abc test test abc";

С помощью следующей команды я пытаюсь удалить подстроку abc:

string = string.replace('abc', '');

Однако, эта команда удаляет только первое вхождение abc.

Как мне удалить все вхождения этой подстроки из строки?

5 ответ(ов)

1

Наиболее распространенные и читабельные методы замены подстроки в строке:

var str = "Test abc test test abc test test test abc test test abc";

Метод 1:

str = str.replace(/abc/g, "replaced text");

В этом методе используется регулярное выражение для замены всех вхождений "abc" на "replaced text".

Метод 2:

str = str.split("abc").join("replaced text");

Этот метод разбивает строку на массив по подстроке "abc" и затем соединяет элементы массива с заменой на "replaced text".

Метод 3:

str = str.replace(new RegExp("abc", "g"), "replaced text");

Здесь мы создаём регулярное выражение с флагом "g", чтобы заменить все вхождения "abc" на "replaced text".

Метод 4:

while(str.includes("abc")){
   str = str.replace("abc", "replaced text");
}

Этот метод использует цикл, который продолжает заменять "abc" на "replaced text", пока в строке присутствует "abc".

Вывод:

console.log(str);
// Test replaced text test test replaced text test test test replaced text test test replaced text

Таким образом, в зависимости от ваших предпочтений и контекста, вы можете выбрать любой из этих методов для замены подстроки в строке.

0

В вашем коде вы используете метод replace() с глобальным регулярным выражением для замены всех вхождений слова "cat" на "dog" в строке someString. Вот как это делается:

anotherString = someString.replace(/cat/g, 'dog');

Здесь /cat/g — это регулярное выражение, где g означает глобальный поиск, т.е. все вхождения "cat" в строке будут заменены. Результат будет сохранён в переменной anotherString. Если someString было "cat and catfish", то anotherString станет "dog and dogfish".

Если у вас есть дополнительные вопросы или нужна помощь с регулярными выражениями, не стесняйтесь спрашивать!

0

Для того чтобы удалить все вхождения подстроки "abc" из строки с использованием регулярного выражения, вы можете воспользоваться методом replace в JavaScript. Приведённый вами код делает это следующим образом:

str.replace(/abc/g, '');

Здесь /abc/g - это регулярное выражение, где:

  • abc - это символы, которые вы хотите удалить,
  • g - флаг глобального поиска, который указывает на то, что нужно найти все вхождения в строке, а не только первое.

Результатом выполнения данного выражения будет новая строка, в которой все подстроки "abc" заменены на пустую строку. Не забудьте, что метод replace не изменяет исходную строку, а возвращает новую.

Если у вас есть какие-либо дополнительные вопросы или вам нужна помощь с другим примером, не стесняйтесь спрашивать!

0

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

function replaceAll(find, replace, str) {
    while (str.indexOf(find) > -1) {
        str = str.replace(find, replace);
    }
    return str;
}

В этом примере функция replaceAll принимает три аргумента: find — подстрока, которую необходимо заменить, replace — подстрока, на которую нужно заменить, и str — исходная строка. В цикле while проверяем, есть ли еще вхождения подстроки find в строке str. Если такие вхождения есть (indexOf возвращает позицию больше -1), то выполняем замену с помощью метода replace. После завершения цикла функция возвращает строку без вхождений find.

0

Если вы хотите заменить несколько вхождений подстроки в строке и у вас под рукой нет функции для экранирования регулярных выражений, вы можете воспользоваться методами split и join. Вот пример функции replaceMulti, которая выполняет эту задачу:

function replaceMulti(haystack, needle, replacement) {
    return haystack.split(needle).join(replacement);
}

someString = 'the cat looks like a cat';
console.log(replaceMulti(someString, 'cat', 'dog'));

В этом коде мы разбиваем исходную строку haystack на массив подстрок, которые разделены искомой подстрокой needle, а затем объединяем этот массив обратно в строку, заменяя needle на replacement. В результате, все вхождения подстроки 'cat' будут заменены на 'dog'.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь