最近需求,需要判断字符串是否为正整数,但是查阅网上资料和各种现有工具类方法,实现都是遍历字符串,判断字符是不是0~9,都忽略了以0开头的情况,比如011也是返回true。以下是改正后的判断方法:
public static void main(String[] args) {
System.out.println( isNumeric("00111"));
System.out.println( isNumeric("11"));
System.out.println( isNumeric("-11"));
System.out.println( isNumeric("0"));
System.out.println( isNumeric("+11"));
System.out.println( isNumeric("11.11"));
System.out.println( isNumeric("aa"));
}
private static Pattern pattern = Pattern.compile("^[1-9]\\d*$");
/**
* 是否是正整数,前面不以0开头
* @param str
* @return
*/
public static boolean isNumeric(String str){
if(str == null || "".equals(str.trim())){
return false;
}
str = str.trim();
// 包括0,不想包括0则去掉
if ("0".equals(str)){
return true;
}
return pattern.matcher(str).matches();
}
false
true
false
true
false
false
false