我有一个字符串列表,如果模式匹配,我想将它们转换为浮点数。
以下是一些值和预期结果:
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) {
}
}
这段代码的问题是,没有执行基于模式的验证。例如,日期 like2012/05/30
被转换为2012
.
那么如何定义一个有效的模式或DecimalFormat
根据我的需要进行配置呢?