myString.replace(VARIABLE,"")......但全局

mon*_*lot 36 javascript string variables replace

如何使用变量从字符串中删除子字符串的所有实例?(要删除,我认为最好的方法是全局替换,没有,......对吗?)

如果我有这两个字符串,

myString = "This sentence is an example sentence."
oldWord = " sentence"
Run Code Online (Sandbox Code Playgroud)

然后这样的事情

myString.replace(oldWord, "");
Run Code Online (Sandbox Code Playgroud)

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

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

Der*_*會功夫 68

好吧,你可以用这个:

var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");
Run Code Online (Sandbox Code Playgroud)

或者干脆:

myString.replace(new RegExp(oldWord, "g"), "");
Run Code Online (Sandbox Code Playgroud)

  • 热潮:`var oldWord ='\\';` (2认同)

Eri*_*pen 8

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

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

myString.replace(oldWordRegEx,"");
Run Code Online (Sandbox Code Playgroud)

  • 我只是输入较慢并提供更多建议. (9认同)
  • 叹...永远是伴娘从来没有回答。 (3认同)

GOT*_*O 0 6

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

myString.split(oldWord).join('')
Run Code Online (Sandbox Code Playgroud)

在 OP 的示例中:

myString.split(oldWord).join('')
Run Code Online (Sandbox Code Playgroud)