如有改善的地方,望指出。
/**
* 判断字符串是否为数字
*
* @param str 参数
* @return boolean
*/
public static boolean isNumber(String str) {
if (Objects.isNull(str) // 字符串为null,不是数字
|| (str.contains("-") && str.indexOf("-") != 0) // “-”符号没有出现在第一位,不是数字
|| str.indexOf("-") != str.lastIndexOf("-") // “-”符号出现两次及以上,不是数字
|| str.indexOf(".") != str.lastIndexOf(".") // “.”符号出现两次及以上,不是数字
|| (str.indexOf(".") == 0 || str.indexOf(".") == str.length() - 1)) { // “.”号出现在第一位或者最后一位,不是数字
return false;
}
for (int i = 0; i < str.length(); i++) {
// “-”和“.”符号不需要再次判断
String charStr = String.valueOf(str.charAt(i));
if ("-".equals(charStr) || ".".equals(charStr)) {
continue;
}
// 判断字符是否数字
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}