我有一个包含多个字段的网页(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中是否也提供类似的功能?或者我应该采用完全不同的方法吗?
答案 0 :(得分:1)
这是我的解决方案:
我使用了Alex链接(https://stackoverflow.com/a/10726800/363573)中显示的函数tr()并使用以下代码翻译我的字符串:
moneystr=tr(moneystr,"0123456789 ","01234567889 ");