我怎样才能逃脱';'在 Javascript
How can I escape a ';' in Javascript
我正在尝试编写一个算法来替换 &
、<
、>
、</code>、[=16= 等字符], <code>"
及其对应的 HTML 实体(即 &
将替换为 &
。这需要我在字符串中放置一个分号,这会产生错误因为 Javascript 认为我已经结束了这一行。这是我的代码:
str.charAt(i) = '&';
我以为我可以这样取消它:
str.charAt(i) = '&\;';
但这会产生错误。
您不需要转义字符串中的分号。 JavaScript 并不认为该行以字符串结尾,就像它认为该行在 for (var i = 0; ...)
.
内结束一样
问题是您的分配无效。你似乎试图改变一个字符串,这在 JS 中是不可能的,因为字符串是不可变的。
相反,您需要创建一个新字符串,其中包含您想要用新内容替换的部分。
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 """
});
问题不是转义问题。这是因为您试图为 String.charAt()
方法的静态输出赋值,这是不允许的。
相反,请尝试使用字符串替换方法将您的 HTML 实体替换为替代值。
s = 'Hello & World';
s.replace(/\&/g, '&');
字符串文字中的分号不会终止 JavaScript 中的语句。
ReferenceError: Invalid left-hand side in assignment
您的问题是您试图为函数的 return 值赋值,这是不允许的。
如果要替换字符串中的字符,请使用 replace
方法。
在这种情况下,您尝试将文本字符串转换为 HTML 字符串,让 DOM 为您完成此操作更简单:
var div_node = document.createElement('div');
var text_node = document.createTextNode(str);
div_node.appendChild(text_node);
var str_html = div_node.innerHTML;
请注意,这不会替换 所有 个字符。有些不需要一直转义。
您可以使用函数将字符替换为 HTML 个实体:
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
;
不需要任何替换。
我正在尝试编写一个算法来替换 &
、<
、>
、</code>、[=16= 等字符], <code>"
及其对应的 HTML 实体(即 &
将替换为 &
。这需要我在字符串中放置一个分号,这会产生错误因为 Javascript 认为我已经结束了这一行。这是我的代码:
str.charAt(i) = '&';
我以为我可以这样取消它:
str.charAt(i) = '&\;';
但这会产生错误。
您不需要转义字符串中的分号。 JavaScript 并不认为该行以字符串结尾,就像它认为该行在 for (var i = 0; ...)
.
问题是您的分配无效。你似乎试图改变一个字符串,这在 JS 中是不可能的,因为字符串是不可变的。
相反,您需要创建一个新字符串,其中包含您想要用新内容替换的部分。
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 """
});
问题不是转义问题。这是因为您试图为 String.charAt()
方法的静态输出赋值,这是不允许的。
相反,请尝试使用字符串替换方法将您的 HTML 实体替换为替代值。
s = 'Hello & World';
s.replace(/\&/g, '&');
字符串文字中的分号不会终止 JavaScript 中的语句。
ReferenceError: Invalid left-hand side in assignment
您的问题是您试图为函数的 return 值赋值,这是不允许的。
如果要替换字符串中的字符,请使用 replace
方法。
在这种情况下,您尝试将文本字符串转换为 HTML 字符串,让 DOM 为您完成此操作更简单:
var div_node = document.createElement('div');
var text_node = document.createTextNode(str);
div_node.appendChild(text_node);
var str_html = div_node.innerHTML;
请注意,这不会替换 所有 个字符。有些不需要一直转义。
您可以使用函数将字符替换为 HTML 个实体:
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
;
不需要任何替换。