2012-09-11 97 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; 

}