文字列のリストがあり、パターンが一致した場合に浮動小数点に変換したいと考えています。
いくつかの値と期待される結果は次のとおりです。
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
、ニーズに合わせて構成したりするにはどうすればよいでしょうか?