踩坑:判断字符串是不是数字

代码中有时候需要判断字符串是不是数字,现在有以下写法:

try {
    int i = Integer.parseInt("1234");
} catch (NumberFormatException e) {
    throw new BusinessException(-1,"请填写数字");
}

但是这种写法是有问题的,如果数字本身很大,超出int的范围,那么即使传入的是数字,也会抛异常;因此推荐使用Apache的工具类,用如下写法:

boolean numeric = StringUtils.isNumeric("1234");
if (!numeric) {
    throw new BusinessException(-1,"请填写数字");
}

这个方法的底层是判断每个字符是不是数字:

    public static boolean isNumeric(CharSequence cs) {
        if (isEmpty(cs)) {
            return false;
        } else {
            int sz = cs.length();
            for(int i = 0; i < sz; ++i) {
                if (!Character.isDigit(cs.charAt(i))) {
                    return false;
                }
            }
            return true;
        }
    }

你可能感兴趣的:(踩坑:判断字符串是不是数字)