繁体   English   中英

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

[英]How to convert string of mixed latin and unicode characters

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

var EGstr = 'Гриф Kettler прямой';
var newStr = EGstr.replace(/&#(\d+);/g, String.fromCharCode('$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;
}

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

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

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

从第二个参数开始,将是捕获组捕获的任何参数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM