java小工具util系列11:判断字符串是否是数值型,包括负数、0、正整数、浮点数等

在这里插入图片描述

问题:封装一个方法,判断字符串是否是数值型,要求也能判断负数

答案:

测试方法1:使用org.apache.commons.lang3.StringUtils

@Test
void judgeStringType()  {
    
    
    String s0 = "123";
    String s1 = "adb123";
    String s2 = "-1";
    String s3 = "0";
    String s4 = "3.1415926";
    System.out.println("判断s0是否为数值类型:" + StringUtils.isNumeric(s0)); //true
    System.out.println("判断s1是否为数值类型:" + StringUtils.isNumeric(s1)); //false
    System.out.println("判断s2是否为数值类型:" + StringUtils.isNumeric(s2)); //false
    System.out.println("判断s3是否为数值类型:" + StringUtils.isNumeric(s3)); //true
    System.out.println("判断s4是否为数值类型:" + StringUtils.isNumeric(s4)); //false
}

测试结果表明:使用org.apache.commons.lang3.StringUtils,判断字符串是否是数值类型,数值只能判断0~正整数,有一个缺陷,负数和浮点数未正确判断,比如-1判断为false

测试方法2:采用正则表达式匹配,优点:除字符串外都能匹配

@Test
void judgeStringType2()  {
    
    
    Pattern pattern = Pattern.compile("-?\\d+(\\.\\d+)?");
    String s0 = "123";
    String s1 = "adb123";
    String s2 = "-1";
    String s3 = "0";
    String s4 = "3.1415926";
    System.out.println("判断s0是否为数值类型:" + pattern.matcher(s0).matches()); //true
    System.out.println("判断s1是否为数值类型:" + pattern.matcher(s1).matches()); //false
    System.out.println("判断s2是否为数值类型:" + pattern.matcher(s2).matches()); //true
    System.out.println("判断s3是否为数值类型:" + pattern.matcher(s3).matches()); //true
    System.out.println("判断s4是否为数值类型:" + pattern.matcher(s4).matches()); //true
}

测试结果表明:采用正则表达式匹配,优点:除字符串外都能匹配,推荐使用第二种方法。

猜你喜欢

转载自blog.csdn.net/a924382407/article/details/126936229