您的位置:

如何判断Java中的字符串是否为数字类型

一、使用正则表达式

public static boolean isNumeric(String str) {
    if (str == null || str.length() == 0) {
        return false;
    }
    return str.matches("-?[0-9]+.?[0-9]*");
}

正则表达式可以检测字符串是否为数字类型,其中“-?”表示可选的负号,"[0-9]+"表示一串数字,".?[0-9]*"表示可选的小数部分。

二、使用Java内置函数

public static boolean isNumeric(String str) {
    if (str == null || str.length() == 0) {
        return false;
    }
    try {
        Double.parseDouble(str);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

使用Java内置函数Double.parseDouble()可以直接将字符串转成Double类型,如果转换成功则说明字符串为数字类型,否则会抛出NumberFormatException错误。

三、使用Apache Commons Lang库

public static boolean isNumeric(String str) {
    if (str == null || str.length() == 0) {
        return false;
    }
    return NumberUtils.isNumber(str);
}

Apache Commons Lang库提供了NumberUtils.isNumber()方法,可以判断字符串是否为数字类型。

四、使用正整数/负整数/小数判断

public static boolean isPositiveInteger(String str) {
    if (str == null || str.length() == 0) {
        return false;
    }
    Pattern pattern = Pattern.compile("[0-9]*");
    Matcher isPositiveInteger = pattern.matcher(str);
    return isPositiveInteger.matches();
}

public static boolean isNegativeInteger(String str) {
    if (str == null || str.length() == 0) {
        return false;
    }
    Pattern pattern = Pattern.compile("^-[0-9]*$");
    Matcher isNegativeInteger = pattern.matcher(str);
    return isNegativeInteger.matches();
}

public static boolean isDecimal(String str){
    if(str == null || str.length() == 0){
        return false;
    }
    Pattern pattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$");
    Matcher matcher = pattern.matcher(str);
    return matcher.matches();
}

根据需要判断字符串是否正整数/负整数/小数类型,使用正则表达式可以轻松实现。