myString.replace(变量,“”)......但全球(myString.replace(

2019-07-28 22:55发布

我如何使用一个变量来从一个字符串中删除一个字符串的所有实例? (去掉,我想最好的办法是更换,什么也没有,全球......吧?)

如果我有这两个字符串,

myString = "This sentence is an example sentence."
oldWord = " sentence"

那么这样的事情

myString.replace(oldWord, "");

只替换字符串中的变量的第一个实例。

但如果我加入全球摹这样myString.replace(/oldWord/g, ""); 这是行不通的,因为它认为oldWord,在这种情况下,是子,而不是一个变量。 我怎样才能用变量做到这一点?

Answer 1:

那么,你可以这样做:

var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");

或者干脆:

myString.replace(new RegExp(oldWord, "g"), "");


Answer 2:

你必须传递变量时使用的构造函数,而不是字面语法。 与文字字符串字面语法坚持避免混淆转义语法。

var oldWordRegEx = new RegExp(oldWord,'g');

myString.replace(oldWordRegEx,"");


Answer 3:

无需使用正则表达式在这里:拆分各地要删除,然后再加入剩余部分一起串的匹配字符串:

myString.split(oldWord).join('')

在OP的例子:

 var myString = "This sentence is an example sentence."; var oldWord = " sentence"; console.log(myString.split(oldWord).join('')); 



Answer 4:

据在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告诉它做全局替换,不区分大小写。



文章来源: myString.replace( VARIABLE, “”) … but globally