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>

問題は、2 回目に置き換えたときに、最初に置き換えたものを「記憶」していないため、最後の置き換えのみが返されることです。

4

2 に答える 2

4

これは、置き換えられたテキストの値である、ではなく、2番目の元の text文字列を置き換えているためです。replacen

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

replace元の文字列は変更されません。代わりに、新しい変更された文字列を返します。1つのステートメントで両方の置換を実行することもできます。

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 に答える