У меня есть список строк, и я хотел бы преобразовать их в число с плавающей запятой, если шаблон соответствует.
Вот некоторые значения и ожидаемый результат:
1000 -> 1000.0
1.000 -> 1000.0
1.000,000 -> 1000.0
-1.000,000 -> -1000.0
9,132 -> 9.132
1,000.00 -> invalid
30.10.2010 -> invalid
1,000.000,00 -> invalid
Я попробовал этот код для проверки правильности числа, но шаблон никогда не совпадал:
Pattern pattern = Pattern.compile("#.###,###");
for(String s : list){
Matcher m = pattern.matcher(s);
if(m.matches()){
//convert
}
}
Кроме того, я пытался использовать этот код:
DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance();
for(String s : list){
try {
Number num = df.parse(s);
//..
} catch (ParseException e) {
}
}
Проблема с этим кодом в том, что проверка на основе шаблона не выполняется. Например. дата типа 2012/05/30
преобразуется в 2012
.
Итак, как мне определить правильный шаблон или настроить DecimalFormat
для своих нужд?