У меня есть EditText, который должен работать следующим образом (Android 2.3.3):
Пользователь вводит, например, 10,40 (что составляет 10 евро и 40 центов в валюте ЕС) - я хочу затемвозьмите этот ввод String и преобразуйте его, например, в BigDecimal (или Number и т. д.), для дальнейших внутренних вычислений.
То же самое должно работать, если пользователь вводит 10.40 (что - в случае доллара США)будет стоить 10 долларов и 40 центов), затем возьмете этот строковый вход и преобразует его, например, в BigDecimal (или число и т. д.).
Я попробовал следующее (основываясь на ответе Майкла Петротты here ), который не работает с "ParseException: Unparsable Number 10,40):
// German input
NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
// User input
String value = "10,40";
Number valueParsed = formatter.parse(value);
Я также попытался" 10,40 € ", но безрезультатно. Так что я либо неправильно понимаю цельNumberFormat.parse или я на неправильном пути все вместе ...? Я действительно хочу избегать использования регулярных выражений для замены запятой в "10,40" для версии, которая должна работать на международном уровне, и я хотел бы немного чистой, Locale-bAsed подход.
РЕДАКТИРОВАТЬ
Я нашел этот вопрос , который решает ту же проблему - правильный ответ использует тот же подход, что и я, поэтому я попытался снова (используя Франциюв качестве локали на этот раз), но, тем не менее, он терпит неудачу, что выглядит довольно странно ... Комментарий под ссылочным вопросом предложил использовать replaceAll (",", "."), что мне кажется плохой идеей, поскольку некоторые валюты используют запятуюкак разделитель для тысяч, например, доллар США, если я не ошибаюсь.Я мог бы, однако, проверить локаль, но швы затенены :( и потенциально ошибочны ...