Форматирование валюты в строке из разных форматов валюты - PullRequest
1 голос
/ 02 декабря 2011

В моем приложении Groovy есть строковая переменная Java. Переменная содержит вводимые пользователем цены в разных форматах:

val = "1,250.50"
val = "1.250,50"
val = "1250,50"
val = "1250.50" 

(etc.. I don't know if there are anymore funny way other countries write this)

Есть ли способ разобрать это на соответствующее двойное значение независимо от формата? Глядя на это на данный момент, но не уверен, поможет ли это. Мой текущий метод работает только для формата США:

total = Double.parseDouble(val.replace('$','').replaceAll(",","").trim())

1 Ответ

1 голос
/ 02 декабря 2011

Вы не можете разобрать его, не зная, что пользователь будет использовать в качестве десятичного разделителя, разделителя группировки, ....Например, если я наберу 1250, вы не знаете, имею ли я в виду тысячу двести пятьдесят (1250,00) или одно очко двести пятьдесят (1,250).Вот почему класс Java NumberFormat / DecimalFormat позволяет вам указать группировку и десятичный разделитель.

Что вы можете сделать, так это надеяться, что пользователь введет свои значения, используя соглашения, соответствующие его настройкам Locale, и используйте1003 *

NumberFormat.getInstance( Locale )

с текущим языковым стандартом JVM.

Примечание: с помощью NumberFormat вы также можете анализировать валюту.См. NumberFormat # getCurrencyInstance

...