我的表单中有很多字符¶
,我想在我的文本编辑器中显示为 unicode 字符。这应该转换它们:
var newtext = doctext.replace(
/&#(\d+);/g,
String.fromCharCode(parseInt("$1", 10))
);
但似乎不起作用。正则表达式/&#(\d+);/
让我得到了数字——但String.fromCharCode
似乎没有给出我想要的结果。怎么了?
我的表单中有很多字符¶
,我想在我的文本编辑器中显示为 unicode 字符。这应该转换它们:
var newtext = doctext.replace(
/&#(\d+);/g,
String.fromCharCode(parseInt("$1", 10))
);
但似乎不起作用。正则表达式/&#(\d+);/
让我得到了数字——但String.fromCharCode
似乎没有给出我想要的结果。怎么了?
替换部分应该是匿名函数而不是表达式:
var newtext = doctext.replace(
/&#(\d+);/g,
function($0, $1) {
return String.fromCharCode(parseInt($1, 10));
}
);
如果您使用完整的 HTML(即不控制输入内容),则替换方法并非万无一失。例如,如果您的实体都是十进制的,Jack 提交的方法(显然也是原始帖子中的想法)非常有效,但不适用于 hex A
,对于命名实体(如"
.
为此,您可以使用另一个技巧:创建一个元素,将其 innerHTML 设置为源,然后读出其文本值。基本上,浏览器知道如何处理实体,所以我们委托。:) 在 jQuery 中很容易:
$('<div/>').html('&').text()
// => "&"
使用普通的 JS,它会变得更加冗长:
var el = document.createElement();
el.innerHTML = '&';
el.textContent
// => "&"