为什么replace()在Node.js中不起作用?

时间:2017-11-17 19:23:29

标签: javascript node.js escaping

我有一些我在Node.js中处理的数据,我需要用转义键替换&符号。我有这段代码:

let newValue = data;
for (label in labelData.data) {
    let key = "Label " + label;
     newValue = newValue.replace(key, labelData.data[label]);

}
let noAmpersands = newValue.replace('&', '&');
console.log(noAmpersands);

此代码替换了SVG中的占位符,但很明显,&符号需要用其转义字符替换。然而。这会在没有替换&符号的情况下记录该值。例如,这个:

<g transform="matrix(1 0 0 1 -865.665 -1513.81)">
 <text x="3000" y="3750" id="text4790-27" class="fil1 fnt0" text-anchor="middle">EthCAN 3 &</text>

应该是

<g transform="matrix(1 0 0 1 -865.665 -1513.81)">
 <text x="3000" y="3750" id="text4790-27" class="fil1 fnt0" text-anchor="middle">EthCAN 3 &amp;</text>

发生了什么事?

1 个答案:

答案 0 :(得分:0)

  

这里的最终目标是编码HTML entities,有各种在线文章和答案如何实现。只是google

如果您只想替换&假设 newVlauestring

您的代码:newValue.replace('&', '&amp;');只会替换第一次出现而不是所有出现次数。要替换所有匹配项,请使用:newValue.replace(/&/g, '&amp;');