Как заменить все вхождения строки в JavaScript - PullRequest
3824 голосов
/ 17 июля 2009

У меня есть эта строка:

"Test abc test test abc test test test abc test test abc"

Doing

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

, кажется, удаляет только первое вхождение abc в приведенной выше строке. Как я могу заменить все его вхождения?

Ответы [ 55 ]

3 голосов
/ 29 января 2019

Метод 1

Попробуйте реализовать регулярное выражение

"Тест ABC тест, тест ABC тест, тест ABC тест, тест ABC" .replace (/ \ abc / g, '');

Метод 2

Разделить и присоединиться. Разделить с помощью abc и объединить с пустым пространством

«Тест abc, тест, abc, тест, тест, abc, тест, тест, abc, тест, тест, abc» .split («abc»). Join ("»)

2 голосов
/ 14 сентября 2014

Если использование библиотеки является опцией для вас, то вы получите преимущества тестирования и поддержки сообщества, которые идут вместе с библиотечной функцией. Например, библиотека string.js имеет функцию replaceAll (), которая выполняет то, что вы ищете:

// Include a reference to the string.js library and call it (for example) S.
str = S(str).replaceAll('abc', '').s;
2 голосов
/ 16 апреля 2019

Я использую split и join или эту функцию

function replaceAll( text, busca, reemplaza ){
  while (text.toString().indexOf(busca) != -1)
      text = text.toString().replace(busca,reemplaza);
  return text;
}
2 голосов
/ 28 декабря 2017

В строке первый поиск элемента и замена

var str = '[{"id":1,"name":"karthikeyan.a","type":"developer"}]'
var i = str.replace('"[','[').replace(']"',']');
console.log(i,'//first element search and replace')

В строке глобального поиска и замены

var str = '[{"id":1,"name":"karthikeyan.a","type":"developer"}]'
var j = str.replace(/\"\[/g,'[').replace(/\]\"/g,']');
console.log(j,'//global search and replace')
2 голосов
/ 11 апреля 2018

Для уникальных заменяемых значений

String.prototype.replaceAll = function(search_array, replacement_array) {
  //
  var target = this;
  //
  search_array.forEach(function(substr, index) {
    if (typeof replacement_array[index] != "undefined") {
      target = target.replace(new RegExp(substr, 'g'), replacement_array[index])
    }
  });
  //
  return target;
};

//  Use:
var replacedString = "This topic commented on :year. Talking :question.".replaceAll([':year', ':question'], ['2018', 'How to replace all occurrences of a string in JavaScript']);
//
console.log(replacedString);
1 голос
/ 30 мая 2019

Проверьте этот ответ, возможно, он поможет, и я использовал его в своем проекте.

function replaceAll(searchString, replaceString, str) {
   return str.split(searchString).join(replaceString);
}
replaceAll('abc', '',"Test abc test test abc test test test abc test test abc" ); // "Test  test test  test test test  test test "
1 голос
/ 20 мая 2019

Все ответы принимаются, вы можете сделать это разными способами. Один из способов сделать это заключается в следующем.

const str = "Test abc test test abc test test test abc test test abc";

const compare = "abc";
arrayStr = str.split(" ");
arrayStr.forEach((element, index) => {
  if (element == compare) {
    arrayStr.splice(index, 1);
  }
});
const newString = arrayStr.join(" ");
console.log(newString);
1 голос
/ 09 мая 2019

Это должно работать.

String.prototype.replaceAll = function (search, replacement){
var str1 = this.replace(search, replacement);
var str2 = this;
while(str1 != str2){
str2 = str1;
str1 = str1.replace(search, replacement);
}
return str1;
}

Пример:

Console.log("Steve is the best character in minecraft".replaceAll("Steve" ,"Alex"));
1 голос
/ 15 октября 2016

Это можно решить с помощью регулярных выражений и флага g, что означает не останавливаться после нахождения первого совпадения. Действительно, регулярные выражения спасают жизнь!

function replaceAll(string, pattern, replacement) {
    return string.replace(new RegExp(pattern, "g"), replacement);
}

// or if you want myString.replaceAll("abc", "");

String.prototype.replaceAll = function(pattern, replacement) {
    return this.replace(new RegExp(pattern, "g"), replacement);
};
1 голос
/ 26 февраля 2019
 var myName = 'r//i//n//o//l////d';
  var myValidName = myName.replace(new RegExp('\//', 'g'), ''); > // rinold
  console.log(myValidName);

var myPetName = 'manidog';
var renameManiToJack = myPetName.replace(new RegExp('mani', 'g'), 'jack'); > // jackdog
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...