node.js string.replace不起作用?

时间:2014-01-16 12:42:04

标签: string node.js replace

var variableABC = "A B C"; 
variableABC.replace('B', 'D') //wanted output: 'A D C'

但'variableABC'没有改变:

  

variableABC ='A B C'

当我希望它是'A D C'时。

4 个答案:

答案 0 :(得分:117)

根据Javascript标准,String.replace不应该修改字符串本身。它只返回修改后的字符串。有关详细信息,请参阅Mozilla Developer Network documentation

您始终可以将字符串设置为修改后的值:

variableABC = variableABC.replace('B', 'D')

编辑:上面给出的代码只是替换第一次出现。

要替换所有匹配项,您可以执行以下操作:

 variableABC = variableABC.replace(/B/g, "D");  

替换所有出现次数并忽略套管

 variableABC = variableABC.replace(/B/gi, "D");  

答案 1 :(得分:9)

字符串总是建模为不可变(至少在更高级语言python / java / javascript / Scala / Objective-C中)。

所以任何字符串操作如连接,替换总是会返回一个包含预期值的新字符串,而原始字符串仍然是相同的。

答案 2 :(得分:8)

不是string.replace 返回一个值,而不是修改源字符串吗?

因此,如果您想修改variableABC,则需要执行此操作:

var variableABC = "A B C";

variableABC = variableABC.replace('B', 'D') //output: 'A D C'

答案 3 :(得分:0)

如果您只想在不使用正则表达式的情况下从字符串中删除子字符串的所有实例,则可以使用:

    var replacestring = "A B B C D"
    const oldstring = "B";
    const newstring = "E";
    while (replacestring.indexOf(oldstring) > -1) {
        replacestring = replacestring.replace(oldstring, newstring);
    }        
    //result: "A E E C D"