【问题标题】:Converting numeric character reference to actual character将数字字符引用转换为实际字符
【发布时间】:2016-02-19 08:51:15
【问题描述】:

我收到了一些字符串,其中包含以数字字符参考格式表示的日文字符,需要将它们转换为正确的日文字符以进行显示。

我编写了以下 JavaScript 来进行转换

var regex_num_set = /&#\d+;/g,
var strJapanese = "Here is some Japanese text: みなさん、"

var charSet = str.match(REGEX_NUM_CHARSET); 
if(charSet && charSet.length > 0) {
    charSet.forEach(function(c) {
        str = str.replace(c, String.fromCharCode(parseInt(c.replace(/[&#;]/g, ''))));
    })
};

这可以完成工作,但有没有更有效的方法来定义正则表达式并进行简单的单行替换?

【问题讨论】:

  • 如果有效,为什么不在Code Review 发布呢?
  • 我在两者之间犹豫不决,然后回到 stackoverflow,因为我想问一个关于如何定义替代正则表达式的技术问题。

标签: javascript regex utf-8


【解决方案1】:

如果要替换,为什么不使用replace

var regex_num_set = /&#(\d+);/g;
var strJapanese = "Here is some Japanese text: みなさん、"


strJapanese = strJapanese.replace(regex_num_set, function(_, $1) {
  return String.fromCharCode($1);
});  


document.write('<pre>'+JSON.stringify(strJapanese,0,3));

请注意,此代码不处理十六进制转义符 (&amp;#xMMM) 和“星界”字符(如 &amp;#127812;)。对于生产用途,我建议您四处寻找一个可以正确完成工作的库。

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多