【问题标题】:Efficient Replacement of Double-Byte Numerals to Single-Byte Numerals将双字节数字有效替换为单字节数字
【发布时间】:2013-06-09 03:05:17
【问题描述】:
我目前正在开发一个面向日本的网站,默认情况下,他们的键盘使用双字节数字 (\uFF10-\uFF19),这会导致验证问题以及当我们通过数据到其他服务。我正在编写一个函数,在提交之前用单字节(\u0030-\u0039)替换双字节。
目前,我的计划是使用查找表并将数字换成数字,但在循环十几个输入时感觉效率低下。我相信他们是你们中的一个 RegEx 大师可以想出的一种更有效的方法。
有什么想法吗?提前致谢!
【问题讨论】:
标签:
regex
string
replace
double-byte
【解决方案1】:
这其实只是一个音译问题;你要替换的东西,以及你要替换的东西,都是连续的。所以这会起作用:
function replaceFullWidthNumerals(s) {
return s.replace( /[\uFF10-\uFF19]/g,
function(m){
return String.fromCharCode( m.charCodeAt() - 0xFEE0 );
}
);
}