是否有類似於DecimalFormat
的Java解析庫?我無法用DecimalFormat
和正則表達式來做我想要的。在沒有DecimalFormat的情況下使用Java模式解析數字
我需要能夠:
- 解析只有一個整數(DecimalFormat的不僅僅是模式需要更多的設置)
- 解析十進制(精確沒有四捨五入)
- 解析號碼,如123,456.789。 (DecimalFormat for ###,###。###也接受「123456789」)
是否有類似於DecimalFormat
的Java解析庫?我無法用DecimalFormat
和正則表達式來做我想要的。在沒有DecimalFormat的情況下使用Java模式解析數字
我需要能夠:
您可以嘗試將它當作字符串對待並標記它。
str.split(「\\」)將拆出小數邊,然後串到你的精度,然後在數量方面,你可能分裂(「」)
這是一個相當位手工解析工作,但...
是的,但是由於需要支持語言環境,它變得不是一個好主意。 – 2013-03-13 13:23:14
我會使用正則表達式和NumberFormat
:
Map<Pattern,NumberFormat> POSSIBLE_FORMATS = ...;
String input = ...;
Number value = null;
for (Map.Entry<Pattern,NumberFormat> possible : POSSIBLE_FORMATS.entrySet()) {
if (possible.getKey().matcher(input).matches()) {
value = possible.getKeValue().parse(input);
break;
}
}
if (value == null) {
throw new IllegalArgumentExcption("no valid input format: " + input);
}
由於millimoose在上面發表評論,正則表達式的方式將是方式。但它有一個弱點。如何解決語言環境問題?從給定的語言環境準備運行時模式? – 2013-03-13 13:33:22
本地化的值是一個問題。您可以使用DecimalFormatSymbols準備模式。 – 2013-03-15 22:14:19
有什麼錯試圖用一個正則表達式?你嘗試了什麼? – 2013-03-12 20:30:20
您可以組合正則表達式來檢查DecimalFormat的嚴格規則以進行簡單轉換。 – 2013-03-12 20:41:17
正則表達式在檢查格式時可用,但不提供解析功能。例如。我可以正則表達式檢查「123,456.789 $」,但我仍然需要正確解析它。 使用兩者都可以解決問題,但是過程變得複雜(兩種不同的檢查增加了錯誤的概率) – 2013-03-12 20:44:53