使用 Javascript 使用自定义替换方法替换 unicode 字符

Replacing unicode chracters using a custom replacement method using Javascript

我真的需要你的帮助。

我希望能够将字符串与数组进行比较,并用它来替换特殊的 Unicode 代码。

var unicode_dictionary = {
    "[=11=]E9": "é",
    "[=11=]E0": "à"
}


var old_str = "rapport couvrant une p[=11=]E9riode de 6 mois (f[=11=]E9vrier [=11=]E0 juillet)"

if (\CODE match from the unicode_dictionary is found in the old_str) { then

    replace every single instance of the \CODE with the corresponding
character resulting in the new string:

    var new_str = "rapport couvrant une période de 6 mois (février à juillet)"

}

我真的迷失了,因为我的数据库以 \0000 格式输出 unicode 字符。如何制作像上面那样的自定义替换功能

通过使用正则表达式。在字符串替换中你可以实现这一点。看下面的代码

var unicode_dictionary = {
    "\00E9": "é",
    "\00E0": "à"
}


var old_str = "rapport couvrant une p[=10=]E9riode de 6 mois (f[=10=]E9vrier [=10=]E0 juillet)"

function convert(){
  for(var key in unicode_dictionary){    
      var regx=new RegExp(key,'g')
      old_str=old_str.replace(regx,unicode_dictionary[key]);
   }
  alert(old_str);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button onclick='convert()'>Convert</button>

您可以将 Regex 与其 function 功能结合使用:搜索模式 \[hex digits] 并将其替换为实际的 Unicode 字符,一次性完成任何代码。只要这些代码代表有效的 Unicode 字符,以下工作:

var old_str = "rapport couvrant une p\00E9riode de 6 mois (f\00E9vrier \00E0 juillet)";
var new_str = old_str.replace(/\([\da-f]{4})/gi, function (a,b)
  {
     return String.fromCharCode(parseInt(b, 16));
  });

请注意,我在代码段的源字符串中将反斜杠加倍,因为这是符合 Javascript 规则的。源文本中的单个反斜杠不需要这个。

正好 4 个十六进制字符。如果可能少于但不超过 4 个,则可以使用正则表达式 \([\da-f]{1,4})。它需要一个最大限制,因为源序列中没有 end 标记。这意味着如果没有最大值 4,一个字符串如

the number \00224\0022

-- 原意 the number "4" -- 将被翻译为

the number Ȥ"

因为 Unicode 代码点 U+0224 代表带钩子的大写字母 Z。