在JavaScript中识别(日语)Unicode数字。这样做可以更简单吗?

时间:2014-02-07 12:46:23

标签: javascript regex unicode

我有一个包含多个字段的网页(charset = UTF-8)和一个客户端JavaScript程序。一个特定的输入字段应该包含一个由JavaScript函数处理的数字。除了德语之外,该网页应该被日本人使用。

当日语使用表单时,他们可能会使用日语输入法输入数据。这意味着特别是诸如“1”的数字将被输入为“日语数字1”,这是unicode字符FULLWIDTH DIGIT ONE,即%uFF11。我想在JavaScript中将这样的数字转换为数值?

这是我走了多远。我只关注数字1这个例子,因为如果我能处理这个,我可以处理所有数字:

输入字段的内容存储在我的JavaScript变量 moneystr 中。我的想法是用“正常”数字1替换日语数字1的每一个出现。我发现我可以这样做,例如:

moneystr=moneystr.replace(/\uFF11/g,'1');

这似乎运作良好。

为了将这个想法扩展到所有数字,我可以写下10个这样的替换语句,或写一个从0到9的循环,并从循环变量中计算unicode正则表达式。

然而,对我来说,这两种解决方案看起来都很糟糕。有没有更简洁的方法来做到这一点?如果我在Perl中写这个,我会使用 tr 运算符,在那里我可以一次性翻译所有内容。 JavaScript中是否也提供类似的功能?或者我应该采用完全不同的方法吗?

1 个答案:

答案 0 :(得分:1)

这是我的解决方案:

我使用了Alex链接(https://stackoverflow.com/a/10726800/363573)中显示的函数tr()并使用以下代码翻译我的字符串:

    moneystr=tr(moneystr,"0123456789 ","01234567889 ");