sha*_*dor 2 java unicode cjk number-formatting
我在用Java解析日语货币字符串时遇到问题。日元符号似乎与Java认为的符号不匹配。这是我的代码:
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
Number n = f.parse(s);
Run Code Online (Sandbox Code Playgroud)
这将引发异常:
Exception in thread "main" java.text.ParseException: Unparseable number: "¥200"
at java.text.NumberFormat.parse(NumberFormat.java:333)
Run Code Online (Sandbox Code Playgroud)
似乎Java为日元使用了不同的符号(“ \ uFFE5”)
有人可以帮忙吗?谢谢
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.UK);
String s = "£200";
Number n = f.parse(s);
Run Code Online (Sandbox Code Playgroud)
和
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.US);
String s = "$200";
Number n = f.parse(s);
Run Code Online (Sandbox Code Playgroud)
会产生相同的影响。NumberFormat适用于数字,而不适用于字符串字符;即,如果允许NumberFormat仅解析整数(默认值),则需要删除货币符号。您可以执行以下操作:
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
f.setParseIntegerOnly(false);
Number n = f.parse(s);
Run Code Online (Sandbox Code Playgroud)
这将使日元字符通过。用$尝试它失败。但是将本地货币更改为美国,则允许美元,但不允许日元。