0
<script>
var text = "a's ..a's ...\"... ";
text = convert(text);
function convert( text )
{
    var n = text.replace(/\'/g, "&#039;");
    n = text.replace(/\"/g,"&quot;");
    return n;

}
console.log(text);
document.write(text);

</script>

问题是,当它第二次替换时,它不会“记住”第一次替换的内容,因此只返回最后一次替换。

4

2 回答 2

4

那是因为您要替换第二个中的原始 text字符串replace,而不是替换文本n的值:

function convert( text )
{
    var n = text.replace(/\'/g, "&#039;");
    n = n.replace(/\"/g,"&quot;");
    return n;
}

replace不会修改您原始字符串。相反,它返回一个的修改后的字符串。您也可以在一个语句中同时执行两个替换:

return text.replace(/\'/g, "&#039;").replace(/\"/g,"&quot;");
于 2012-09-11T14:33:31.307 回答
1
function convert( text )
{
    var n = text.replace(/\'/g, "&#039;");
    // Wrong: n = text.replace(/\"/g,"&quot;");
    // This modifies the previously edited variable.
    n = n.replace(/\"/g,"&quot;");
    return n;

}
于 2012-09-11T14:33:24.370 回答