规定:纯数字或数字+单位,如22ms,98.9%,23等
private Double getNumber(String str) {
str = str.trim();
String str2 = "";
if(!"".equals(str)){
for(int i = 0;i <= str.length();i++){
if (i != str.length()) {
String ss = str.substring(i, i + 1);
if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
str2 += str.charAt(i);
} else if (".".equals(ss) || "%".equals(ss)) {
str2 += str.charAt(i);
}//如果不符合上述条件
else {
//如果字符串不为空
if (!"".equals(str2)) {
//如果是正数(整数和小数)
if (str2.matches("^\\d+(\\.\\d+)?$")) {
try {
Double d = Double.valueOf(str2);
return d;
} catch (Exception e) {
logger.error(e.getMessage());
return null;
}
}//如果为百分数
else {
NumberFormat nf=NumberFormat.getPercentInstance();
try {
Number m = nf.parse(str2);
//通过调用nubmer类默认方法直接转换成double
Double dd = m.doubleValue();
return dd;
} catch (Exception e) {
logger.error(e.getMessage());
return null;
}
}
}
}
}//遍历完
else {
if (!"".equals(str2)) {
if (str2.matches("^\\d+(\\.\\d+)?$")) {
try {
return Double.valueOf(str2);
} catch (Exception e) {
logger.error(e.getMessage());
}
}else {
NumberFormat nf=NumberFormat.getPercentInstance();
try {
Number m = nf.parse(str2);
return m.doubleValue();
} catch (Exception e) {
logger.error(e.getMessage());
}
}
}
}
}
}
return null;
}
ps:有优化的地方或者有更好的方法欢迎指正批评,谢谢
Cason松 发布了12 篇原创文章 · 获赞 0 · 访问量 2518 私信 关注