我需要驗(yàn)證顯示的字符串是否為數(shù)字。該值的格式為 123.345.678,99。即,分組分隔符是點(diǎn),小數(shù)點(diǎn)分隔符是逗號(hào)。我試過(guò)在 DecimalFormatter 中設(shè)置分隔符: DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(); DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); symbols.setGroupingSeparator('.'); symbols.setDecimalSeparator(','); formatter.setDecimalFormatSymbols(symbols); formatter.setGroupingUsed(true); System.out.println(formatter.format(incoming));但是,在這種情況下,我得到j(luò)ava.lang.IllegalArgumentException:無(wú)法將給定對(duì)象格式化為數(shù)字我也試過(guò)添加formatter.applyPattern("###,###,###.##");但它沒(méi)有幫助。有任何想法嗎?我猜我也可以使用正則表達(dá)式,但如果可能的話(huà)我想首先使用它DecimalFormatter。
1 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
我會(huì)丟失貨幣,只是明確地DecimalFormat用相關(guān)符號(hào)創(chuàng)建一個(gè)新貨幣。一旦你有了它,你應(yīng)該用它來(lái)解析傳入的字符串,而不是格式化它:
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
dfs.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(dfs);
System.out.println(df.parse(stringToTest));
添加回答
舉報(bào)
0/150
提交
取消