高效替换双字节数字为单字节数字

时间:2013-06-12 20:46:12

标签: regex string replace double-byte

我目前正在开发一个针对日本的网站,默认情况下,他们的键盘使用双字节数字(\ uFF10- \ uFF19),这会导致验证问题以及我们通过时的流程问题其他服务的数据。我正在编写一个函数,在提交之前用双字节(\ u0030- \ u0039)替换双字节。

目前,我的计划是使用查找表并将数字替换为数字,但在循环输入十几个输入时感觉这是低效的。我相信他们是一个更有效的方法,你们中的一个RegEx大师可以提出。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

这实际上只是一个音译问题;你要替换的是什么,以及你用它取而代之的是什么都是连续的。所以这将有效:

function replaceFullWidthNumerals(s) {
  return s.replace( /[\uFF10-\uFF19]/g,
    function(m){
      return String.fromCharCode( m.charCodeAt() - 0xFEE0 );
    }
  );
}