2012-09-11 55 views
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> 

问题是,当它替换第二次时,它不会“记住”第一次替换它,所以只返回最后一次替换。Javascript替换?

回答

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;"); 
+0

哈!你是对的......我多么愚蠢。 –

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; 

}