做最好的在线看片网站/今日军事新闻报道
文章目录
- 引言
- 一、判断字符串是否为数字
- 1.1 第三方包StringUtils.isNumeric
- 1.2 Java自带方法Character.isDigit
- 1.3 正则表达式
- 二、将字符串转化为数字
- 2.1 整数
- 2.2 小数
- 参考
引言
在开发过程中经常需要判断字符串是否为数字,并将字符串转换为数字类型,本篇文章总结一下常用方法。
一、判断字符串是否为数字
1.1 第三方包StringUtils.isNumeric
使用第三方包org.apache.commons.lang3中的StringUtils.isNumeric,不能判断负数、带小数点的数字。
StringUtils.isNumeric("123") = trueStringUtils.isNumeric("12.3") = falseStringUtils.isNumeric("-123") = falseStringUtils.isNumeric("12 3") = falseStringUtils.isNumeric("ab2c") = falseStringUtils.isNumeric("12-3") = falseStringUtils.isNumeric(null) = falseStringUtils.isNumeric("") = true // 注意“”为true!StringUtils.isNumeric(" ") = false
1.2 Java自带方法Character.isDigit
使用Java自带的方法Character.isDigit,不能判断负数。
public static boolean isNumeric(String str) {for (int i = 0; i < str.length(); i++) {System.out.println(str.charAt(i));if (!Character.isDigit(str.charAt(i))) {return false;}}return true;
}
// 测试如下(可以优化,但我不想,就是玩~)
public static void main(String[] args) {System.out.println(isNumeric("123")); // trueSystem.out.println(isNumeric("12.3")); // falseSystem.out.println(isNumeric("-123")); // falseSystem.out.println(isNumeric("")); // trueSystem.out.println(isNumeric(null)); // 异常
}
1.3 正则表达式
该正则表达式可以匹配所有的数字,包括小数和负数!
// str 可能为中文,也可能是-19162431.1254,不使用BigDecimal的话,变成-1.91624311254E7
public static boolean isNumeric(String str) {Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");String bigStr;try {bigStr = new BigDecimal(str).toString();} catch (Exception e) {return false;}Matcher isNum = pattern.matcher(bigStr);if (!isNum.matches()) {return false;}return true;
}
// 测试如下
public static void main(String[] args) {System.out.println(isNumeric("123")); // trueSystem.out.println(isNumeric("12.3")); // trueSystem.out.println(isNumeric("-123")); // trueSystem.out.println(isNumeric("")); // falseSystem.out.println(isNumeric(null)); // false
}
总结:想偷懒的话,直接用第三方包,但正则表达式才是yyds!
二、将字符串转化为数字
2.1 整数
下面方法可以将String类型整数转为int类型,包括负整数。
int a = Integer.parseInt("123");
int b = Integer.parseInt("-123");
2.2 小数
除了自己写,目前没啥好方法😑,等待更新…
参考
java中判断字符串是否为数字的方法的几种方法
java中String是数字的话转Int