2012-04-20 13 views
4

我如何可以转换使用JavaScript的HTML实体€ ► ♠自己的实际字符€ ► ♠如何从HTML字符码中获取char?

+1

'String.fromCharCoode()' – Pointy 2012-04-20 21:37:18

+2

不要忘了,只需要数......即使用String.fromCharCode(8364); // NOT String.fromCharCode(“€”); – 2012-04-20 21:40:28

回答

9

一个例子是:alert(String.fromCharCode(8364));

其中8364是HTML实体的数量。

要替换文本的全身自动,那么你将需要使用正则表达式替换例如:

"The price of milk is now €100000.".replace(/&#(\d{0,4});/g, function(fullStr, str) { return String.fromCharCode(str); }); 

神奇发生在这里:

replace(/&#(\d{1,4});/g, function(fullStr, code) { return String.fromCharCode(code); });

的第一个参数替换,/&#(\d{1,4});/g,指定1至4由&#和包围数字;分别。第二个参数,function(fullStr, code) [...]确实更换,其中code是数字。

+0

这只会取代第一次出现。有没有办法扩展这个以匹配字符串中多次出现的字符代码? – darudude 2017-01-31 08:52:24

+0

@darudude当然,就在你的正则表达式的末尾添加一个'g'标志,使其贪婪:''正则表达式的正则表达式regex'.replace(/正则表达式/克,‘培根’);' - >‘培根熏肉腊肉’ – 2017-01-31 10:37:03

+0

哈哈我是个白痴。不知道我是如何错过的。谢谢! – darudude 2017-01-31 17:38:14

2
document.getElementById("myElement").innerHTML = "&#8364".fromCharCode(); 

其实,从头开始的,该fromCharCode()功能仅在String对象上可用的,所以它看起来像什么威尔摩根说:

document.getElementById("myElement").innerHTML = String.fromCharCode(8364) 
3

你可以使用浏览器通过innerHTML,这将有处理所有HTML实体,而不仅仅是数字的人的优势,内置的HTML解析器。请注意,如果传递给该函数的字符串包含HTML标记,以下方法将不起作用。

function convertEntities(html) { 
    var el = document.createElement("div"); 
    el.innerHTML = html; 
    return el.firstChild.data; 
} 

var html = "€ ► ♠ " &"; 
var text = convertEntities(html); // € ► ♠ " &