Как преобразовать форматированные строки в числа с плавающей запятой?

У меня есть список строк, и я хотел бы преобразовать их в число с плавающей запятой, если шаблон соответствует.

Вот некоторые значения и ожидаемый результат:

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для своих нужд?

0
задан Pedro 5 June 2012 в 23:48
поделиться