我怎么能逃脱';'在Javascript中[关闭]

问题描述 投票:-5回答:5

我正在尝试编写一个算法,用qstxswpoi,&<>'替换它们的HTML实体对应字符(即"将替换为&。这需要我在字符串中放置一个分号,这会产生错误,因为Javascript认为我已经结束了这一行。这是我的代码:

&amp;

我以为我可以这样取消它:

str.charAt(i) = '&amp;';

但这会产生错误。

javascript html html-entities
5个回答
4
投票

问题是您的作业无效。你似乎试图改变一个字符串,这在JS中是不可能的,因为字符串是不可变的。

相反,您需要创建一个新字符串,其中包含您要用新内容替换的部分。

str.charAt(i) = '&amp\;';

3
投票

字符串文字中的分号不会终止JavaScript中的语句。

ReferenceError:赋值中的左侧无效

您的问题是您正在尝试为函数的返回值赋值,这是不允许的。

如果要替换字符串中的字符,请使用var new_str = s.replace(/(?:(&)|(<)|(>)|(')|("))/g, function(s, g1,g2,g3,g4,g5) { if (g1) return "&amp;" if (g2) return "&lt;" if (g3) return "&gt;" if (g4) return "&apos;" if (g5) return "&quot;" }); 方法。

在这种情况下,您尝试将一串文本转换为HTML字符串,让DOM为您执行此操作更简单:

replace

请注意,这不会替换所有字符。有些人不需要一直逃脱。


2
投票

您不需要在字符串内转义分号。 JavaScript并不认为该行已经以字符串结尾,而不是认为该行在var div_node = document.createElement('div'); var text_node = document.createTextNode(str); div_node.appendChild(text_node); var str_html = div_node.innerHTML; 内部结束。


2
投票

问题不是逃避问题。这是你试图为for (var i = 0; ...)方法的静态输出赋值,这是不允许的。

相反,请尝试使用字符串替换方法将HTML实体替换为替代值。

String.charAt()

2
投票

您可以使用函数来替换HTML实体的字符:

s = 'Hello & World';
s.replace(/\&/g, '&amp;');

function htmlEntities(str) { return String(str) .replace(/&/g, '&amp;') .replace(/</g, '&lt;') .replace(/>/g, '&gt;') .replace(/"/g, '&quot;') .replace(/'/g, '&apos;'); } 不需要任何替代品。

© www.soinside.com 2019 - 2024. All rights reserved.