问题:封装一个方法,判断字符串是否是数值型,要求也能判断负数
答案:
测试方法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
}
测试结果表明
:采用正则表达式匹配,优点:除字符串外都能匹配,推荐使用第二种方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106089.html