如何使用变量从字符串中删除子字符串的所有实例? (要删除,我认为最好的方法是全局替换,没有,......对吗?)
如果我有这两个字符串,
myString = "This sentence is an example sentence."
oldWord = " sentence"
然后就是这样的
myString.replace(oldWord, "");
仅替换字符串中变量的第一个实例。
但如果我像这样myString.replace(/oldWord/g, "");
添加全局g它不起作用,因为它认为oldWord在这种情况下是子字符串,而不是变量。如何使用变量?
答案 0 :(得分:66)
嗯,你可以用这个:
var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");
或只是:
myString.replace(new RegExp(oldWord, "g"), "");
答案 1 :(得分:8)
传递变量时,必须使用构造函数而不是文字语法。坚持使用文字字符串的文字语法,以避免混淆转义语法。
var oldWordRegEx = new RegExp(oldWord,'g');
myString.replace(oldWordRegEx,"");
答案 2 :(得分:3)
此处无需使用正则表达式:将字符串拆分为要删除的子字符串的匹配项,然后将其余部分连接在一起:
myString.split(oldWord).join('')
在OP的例子中:
var myString = "This sentence is an example sentence.";
var oldWord = " sentence";
console.log(myString.split(oldWord).join(''));

答案 3 :(得分:-2)
根据MDN的文档,您可以这样做:
var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
var newstr = str.replace(re, 'oranges');
console.log(newstr); // oranges are round, and oranges are juicy.
其中/ gi告诉它进行全局替换,忽略大小写。