如何转换混合拉丁字符串和unicode字符

时间:2014-02-03 18:13:09

标签: javascript regex unicode

我有许多由混合拉丁语和unicode编码的西里尔符号组成的字符串。 我需要的是一个javascript函数,将这些字符串转换为人类可读的形式。 以下是我提出的建议:

var EGstr = 'Гриф Kettler прямой';
var newStr = EGstr.replace(/&#(\d+);/g, String.fromCharCode('$1') );

假设工作正常,但不是...... 请告诉我如何正确更改代码。

2 个答案:

答案 0 :(得分:1)

您可以使用:

var d = document.createElement('div');
d.innerHTML = 'Гриф Kettler прямой';
alert(d.innerHTML); //Гриф Kettler прямой

而不是正则表达式。

或者如果我们把它放到一个函数中......

function getText(txt) {
  var d = document.createElement('div');
  d.innerHTML = txt;
  return d.innerHTML;
}

答案 1 :(得分:0)

您可以为replace方法提供替换功能:

var newStr = EGstr.replace(/&#(\d+);/g, function(_, $1) {
    return String.fromCharCode($1);
});

替换函数的第一个参数将是与整个表达式匹配的文本(我们不需要)。

第二个论点将是捕获组捕获的任何内容。

倒数第二个参数和最后一个参数将分别包含匹配和源字符串的偏移量(我们在这里也不需要,所以我不在替换函数中声明它们。)