从不同的地区货币格式格式化字符串中的货币



我在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,250,你不知道我的意思是一千二百五十(1,250.00)还是一点二百五十(1,250)。这就是为什么Java的NumberFormat/DecimalFormat类允许你指定分组和小数分隔符。

您可以做的是希望用户使用与他的Locale设置对应的约定输入他的值,并使用

NumberFormat.getInstance( Locale )

使用JVM的当前语言环境。

注意:NumberFormat也可以解析货币。看到NumberFormat # getCurrencyInstance

最新更新