Разобрать строку японской валюты с помощью java.text.NumberFormat - PullRequest
2 голосов
/ 06 мая 2011

У меня проблемы с анализом строки японской валюты на 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 ]

4 голосов
/ 06 мая 2011
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);

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

3 голосов
/ 10 мая 2011

Попробуйте изменить символ «¥» (0xC2A5) на «¥» (0xEFBFA5).«¥» (0xC2A5) - это специальный символ в японском языке.

...