var variableABC = "A B C";
variableABC.replace('B', 'D') //wanted output: 'A D C'
但 'variableABC' 并没有改变:node.js string.replace不起作用?
variableABC = 'A B C'
时,我想这是 'A d C'。
var variableABC = "A B C";
variableABC.replace('B', 'D') //wanted output: 'A D C'
但 'variableABC' 并没有改变:node.js string.replace不起作用?
variableABC = 'A B C'
时,我想这是 'A d C'。
根据Javascript标准,String.replace
不应该修改字符串本身。它只是返回修改后的字符串。有关更多信息,请参阅Mozilla Developer Network documentation。
你总是可以串正好被设置为修改后的值:
variableABC = variableABC.replace('B', 'D')
编辑:上面给出的代码是只更换一次出现。
要更换所有出现,你可以这样做:
variableABC = variableABC.replace(/B/g, "D");
要全部替换,而忽略套管
variableABC = variableABC.replace(/B/gi, "D");
是不是与string.replace 返回的值,而不是修改源字符串?
所以,如果你想修改variableABC,你需要这样做:
var variableABC = "A B C";
variableABC = variableABC.replace('B', 'D') //output: 'A D C'
字符串总是建模为不变(ATLEAST在heigher高级语言蟒蛇/ JAVA/JavaScript的/斯卡拉/目标-C)。
所以像串联,替换总是任何字符串操作返回一个新的字符串,其中包含预期的价值,而原来的字符串仍然是相同的。
只是FYI:Ruby字符串是可变的。 – Jimmy
@Jimmy Thar在这里是多余的。 –
如果你只是想揍所有的子出字符串的情况下,而无需使用正则表达式,你可以使用:
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"
字符串是不可变的,你必须从某个地方传的结果,很可能回本身就像下面的答案一样。 – adeneo