我如何使用一个变量来从一个字符串中删除一个字符串的所有实例? (去掉,我想最好的办法是更换,什么也没有,全球......吧?)
如果我有这两个字符串,
myString = "This sentence is an example sentence."
oldWord = " sentence"
那么这样的事情
myString.replace(oldWord, "");
只替换字符串中的变量的第一个实例。
但如果我加入全球摹这样myString.replace(/oldWord/g, "");
这是行不通的,因为它认为oldWord,在这种情况下,是子,而不是一个变量。 我怎样才能用变量做到这一点?
那么,你可以这样做:
var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");
或者干脆:
myString.replace(new RegExp(oldWord, "g"), "");
你必须传递变量时使用的构造函数,而不是字面语法。 与文字字符串字面语法坚持避免混淆转义语法。
var oldWordRegEx = new RegExp(oldWord,'g');
myString.replace(oldWordRegEx,"");
无需使用正则表达式在这里:拆分各地要删除,然后再加入剩余部分一起串的匹配字符串:
myString.split(oldWord).join('')
在OP的例子:
var myString = "This sentence is an example sentence."; var oldWord = " sentence"; console.log(myString.split(oldWord).join(''));
据在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告诉它做全局替换,不区分大小写。