Разобрать строку японской валюты с помощью java.text.NumberFormat
Я сталкиваюсь с проблемами при разборе японской строки валюты на Java. Кажется, что символ йены не соответствует тому, что, по мнению Java, должно быть. Вот мой код:
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
Number n = f.parse(s);
Это выдаст исключение:
Exception in thread "main" java.text.ParseException: Unparseable number: "¥200"
at java.text.NumberFormat.parse(NumberFormat.java:333)
Кажется, что Java использует другой символ для иены ("\uFFE5")
Может ли кто-нибудь помочь с этим? Спасибо
2 ответа
Попробуйте изменить символ "¥"(0xC2A5) на "¥" (0xEFBFA5).
"¥"(0xC2A5) - это специальный символ в японском языке.
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.UK);
String s = "£200";
Number n = f.parse(s);
А ТАКЖЕ
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.US);
String s = "$200";
Number n = f.parse(s);
Будет иметь такой же эффект. NumberFormat работает с числами, а не с символом строки, т.е. вам нужно удалить символ валюты, если вы разрешаете NumberFormat анализировать только целые числа (по умолчанию). Что вы можете сделать, это:
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
f.setParseIntegerOnly(false);
Number n = f.parse(s);
Это позволит персонажу иены пройти. Попробуйте с $, и это не удастся. Но смените местное на американское, и $ разрешено, а йена - нет.