根據一條線:

s = "Test abc test test abc test test test abc test test abc";

这似乎只是在上面的行中删除ABC的第一次出现:

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

如何替代所有事件?


当前回答

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

或者尝试替代所有方法,如本答案所建议:

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

或:

var search = 'abc';
str = str.replaceAll(search, '');

EDIT: 关于更换的澄清 所有可用性

替代All 方法将添加到 String 的原型,这意味着它将适用于所有 String 对象/字体。

例子:

var output = "test this".replaceAll('this', 'that'); // output is 'test that'.
output = output.replaceAll('that', 'this'); // output is 'test this'

其他回答

使用常规表达式:

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

我使用p来存储以前的回归替换结果:

function replaceAll(s, m, r, p) {
    return s === p || r.contains(m) ? s : replaceAll(s.replace(m, r), m, r, s);
}

它将取代链 s 的所有事件,直到它是可能的:

replaceAll('abbbbb', 'ab', 'a') → 'abbbb' → 'abbb' → 'abb' → 'ab' → 'a'

要避免无限旋转,我检查替代r是否包含一匹匹匹配m:

replaceAll('abbbbb', 'a', 'ab') → 'abbbbb'

添加 /g

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

// Replace 'hello' string with /hello/g regular expression.
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

G 意味着全球性

我使用分割和加入或这个功能:

function replaceAll(text, busca, reemplaza) {
  while (text.toString().indexOf(busca) != -1)
    text = text.toString().replace(busca, reemplaza);
  return text;
}
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