【发布时间】:2011-04-05 19:00:38
【问题描述】:
我需要一个函数,它将接受字符串和整数,指示非负双精度或整数的位置并返回数字或空值。如果有 '+' 则返回 null。
例子
2.1 , 0 -> 2.1
+2.1 , 0 -> null
-1 , 0 -> null
-1.2 , 1 -> 1.2
qwa56sdf , 3 -> 56
最优雅的方法是什么? 谢谢。
更新 我需要这样的代码,但更好)
Number parse(String str, int pos){
Matcher m = Pattern.compile("^(\\d+(?:\\.\\d+)?)").matcher(str);
m.region(pos, str.length());
if(m.find()){
return Double.parseDouble(m.group());
} else {
return null;
}
}
【问题讨论】:
-
为什么您的第三个示例返回 null?
-
因为它必须是非负数。
-
那么,为什么第四个不为空呢?
-
因为它从第二个字符开始解析。
标签: java string parsing double number-formatting