最近需求,需要判断字符串是否为正整数,但是查阅网上资料和各种现有工具类方法,实现都是遍历字符串,判断字符是不是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 = pile("^[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