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