我正在尝试编写一个算法,用qstxswpoi,&
,<
,>
,,
'
替换它们的HTML实体对应字符(即"
将替换为&
。这需要我在字符串中放置一个分号,这会产生错误,因为Javascript认为我已经结束了这一行。这是我的代码:
&
我以为我可以这样取消它:
str.charAt(i) = '&';
但这会产生错误。
问题是您的作业无效。你似乎试图改变一个字符串,这在JS中是不可能的,因为字符串是不可变的。
相反,您需要创建一个新字符串,其中包含您要用新内容替换的部分。
str.charAt(i) = '&\;';
字符串文字中的分号不会终止JavaScript中的语句。
ReferenceError:赋值中的左侧无效
您的问题是您正在尝试为函数的返回值赋值,这是不允许的。
如果要替换字符串中的字符,请使用var new_str = s.replace(/(?:(&)|(<)|(>)|(')|("))/g, function(s, g1,g2,g3,g4,g5) {
if (g1) return "&"
if (g2) return "<"
if (g3) return ">"
if (g4) return "'"
if (g5) return """
});
方法。
在这种情况下,您尝试将一串文本转换为HTML字符串,让DOM为您执行此操作更简单:
replace
请注意,这不会替换所有字符。有些人不需要一直逃脱。
您不需要在字符串内转义分号。 JavaScript并不认为该行已经以字符串结尾,而不是认为该行在var div_node = document.createElement('div');
var text_node = document.createTextNode(str);
div_node.appendChild(text_node);
var str_html = div_node.innerHTML;
内部结束。
问题不是逃避问题。这是你试图为for (var i = 0; ...)
方法的静态输出赋值,这是不允许的。
相反,请尝试使用字符串替换方法将HTML实体替换为替代值。
String.charAt()
您可以使用函数来替换HTML实体的字符:
s = 'Hello & World';
s.replace(/\&/g, '&');
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
不需要任何替代品。