Разобрать строку японской валюты с помощью 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);

Это позволит персонажу иены пройти. Попробуйте с $, и это не удастся. Но смените местное на американское, и $ разрешено, а йена - нет.

Другие вопросы по тегам