49

如何使用变量从字符串中删除子字符串的所有实例?(要删除,我认为最好的方法是在全球范围内一无所有地替换......对吗?)

如果我有这两个字符串,

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

然后像这样

myString.replace(oldWord, "");

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

但是如果我像这样添加全局 gmyString.replace(/oldWord/g, "");它将不起作用,因为它认为 oldWord 在这种情况下是子字符串,而不是变量。如何使用变量执行此操作?

4

4 回答 4

91

好吧,你可以使用这个:

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

或者简单地说:

myString.replace(new RegExp(oldWord, "g"), "");
于 2012-04-13T06:17:24.777 回答
12

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

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

myString.replace(oldWordRegEx,"");
于 2012-04-13T06:19:35.523 回答
7

此处无需使用正则表达式:围绕要删除的子字符串的匹配项拆分字符串,然后将其余部分连接在一起:

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

在 OP 的示例中:

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

于 2017-01-23T20:57:37.820 回答
-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 告诉它进行全局替换,忽略大小写。

于 2015-02-19T14:08:47.223 回答