我正在做一个名为 Safen 用户输入第一部分 - htmlspecialchars 的 Codewars 挑战。目的是用 html 实体替换特殊字符。我想出了上面的解决方案,但它不起作用,但底部的代码成功了。正如您所看到的,唯一的区别是它们列出的顺序。为什么我的代码不起作用?
function htmlspecialchars(formData) {
return formData.replaceAll('<', "<")
.replaceAll('>', ">")
.replaceAll('"', """)
.replaceAll('&', "&");
}
function htmlspecialchars(formData) {
return formData.replaceAll('&', "&")
.replaceAll('"', """)
.replaceAll('<', "<")
.replaceAll('>', ">");
}
在你的解决方案中,
<
首先会变成<
(.replaceAll('<', "<")
),但在最后一步(.replaceAll('&', "&")
)它变成&lt;
,这是不正确的。
正确的执行顺序很重要。
只要调试就能找到问题。