一、使用正则表达式
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(); }
根据需要判断字符串是否正整数/负整数/小数类型,使用正则表达式可以轻松实现。