2011-12-01 40 views
1

我在我的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) 

有沒有辦法來解析爲適當的雙精度值無論何種格式?目前看this,但不知道它是否會有所幫助。我目前的方法只適用於美國格式:

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

回答

1

你無法不知道什麼用戶將作爲小數點分隔符使用,分組分隔符,解析它......。例如,如果我輸入1,250,則不知道我是指一千二百五十(1,250.00)還是一點二百五十(1.250)。 這就是爲什麼Java的NumberFormat/DecimalFormat類允許您指定分組和小數點分隔符的原因。

你可以做的是希望用戶輸入使用與他的區域設置的約定他的價值觀,並與JVM的當前Locale使用

NumberFormat.getInstance(Locale) 

注意:使用NumberFormat,您還可以解析貨幣。見NumberFormat#getCurrencyInstance

+0

謝謝。我剛剛意識到,不僅僅是因爲他們在歐盟,他們將遵循歐盟的慣例,反之亦然。我花了一段時間才弄明白這一點:) –