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

Posted

技术标签:

【中文标题】myString.replace( VARIABLE, "") ......但全局【英文标题】:myString.replace( VARIABLE, "") ...... but globally 【发布时间】:2012-04-25 12:55:03 【问题描述】:

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

如果我有这两个字符串,

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

然后是这样的

myString.replace(oldWord, "");

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

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

【问题讨论】:

How do you pass a variable to a Regular Expression javascript? 的可能重复项 【参考方案1】:

好吧,你可以用这个:

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

或者简单地说:

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

【讨论】:

繁荣:var oldWord = '\\';【参考方案2】:

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

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

myString.replace(oldWordRegEx,"");

【讨论】:

哇!这是抄袭我的吗? 我只是打字慢一些,提供更多建议。 叹息......永远是伴娘永远不会回答。【参考方案3】:

这里不需要使用正则表达式:将字符串拆分为要删除的子字符串的匹配项,然后将其余部分连接在一起:

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

在 OP 的例子中:

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

【讨论】:

【参考方案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, "") ......但全局的主要内容,如果未能解决你的问题,请参考以下文章

替代多个 String.Replaces [重复]

如何用 X 替换句点? [复制]

kotlin String :: replace删除转义序列?

在Vue.js中使用JavaScript replace()导致错误。

Javascript:如果冒号则删除最后一个字符

用单个空格替换任意数量的空格[重复]