素材牛VIP会员
Long.valueOf(workOrder.getCreator())类型验证
 进***新  分类:SQL代码  人气:997  回帖:1  发布于6年前 收藏

在执行Long.valueOf()方法的时候,要求传入的参数必须是数字的字符串。如果传入的是"system",则会抛出NumberFormatException异常,有没有哪个jar包里有方法,可以提前判断一下输入的字符串是不是数字类型的字符串呢?

已经知道答案了:
有方法: StringUtil.isNumeric()

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv5 码农
风***飞 CEO 6年前#1
public static boolean isNumeric(String str) {
        if (null == str) {
            return false;
        }

        int length = str.length();

        for (int i = 0; i < length; i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }

        return true;
    }

public boolean isNumeric(String str){ 
   Pattern pattern = Pattern.compile("[0-9]*"); 
   Matcher isNum = pattern.matcher(str);
   if( !isNum.matches() ){
       return false; 
   } 
   return true; 
}

使用org.apache.commons.lang
org.apache.commons.lang.StringUtils;
boolean isNunicodeDigits=StringUtils.isNumeric("aaa123456789");
http://jakarta.apache.org/commons/lang/api-release/index.html下面的解释:
isNumeric
public static boolean isNumeric(String str)Checks if the String contains only unicode digits. A decimal point is not a unicode digit and returns false.
null will return false. An empty String ("") will return true.
 StringUtils.isNumeric(null)   = false
 StringUtils.isNumeric("")     = true
 StringUtils.isNumeric("  ")   = false
 StringUtils.isNumeric("123")  = true
 StringUtils.isNumeric("12 3") = false
 StringUtils.isNumeric("ab2c") = false
 StringUtils.isNumeric("12-3") = false
 StringUtils.isNumeric("12.3") = false
 
Parameters:
str - the String to check, may be null 
Returns:
true if only contains digits, and is non-null

上面三种方式中,第二种方式比较灵活。

第一、三种方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;

而第二方式则可以通过修改正则表达式实现校验负数,将正则表达式修改为“^-?[0-9]+”即可,修改为“-?[0-9]+.?[0-9]+”即可匹配所有数字。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取