七叶笔记 » java编程 » java中判断字符串是否是数字

java中判断字符串是否是数字


java中判断字符串是否是数字的方法如下:

1、用Java自带的方法

Java中有一个Character.isDig(char ch)

    public class CheckStrIsNum {           public static void main(String[] args) {                 double aa = -192322.1212;                String a = "-192322.1212";              String b = "-192322a1212";                 String c = "Java";              String d = "5";                /** 判断是否全为数字 */                                 System.out.println(checkStrIsNum01(Double.toString(aa)));                    System.out.println(checkStrIsNum01(a));                    System.out.println(checkStrIsNum01(b));                    System.out.println(checkStrIsNum01(c));                    System.out.println(checkStrIsNum01(d));         }                /**         * 利用Java的character.isDigit方法进行处理         */        public static boolean checkStrIsNum01(String str) {                for (int i = 0; i < str.length(); i++) {                    System.out.println(str.charAt(i));                 if (!Character.isDigit(str.charAt(i))) {                     return false;                  }            }             return true;       }    }

显然b应该返回false才对,但是却返回true,而"5"应该返回true,也是结果错误。由此可见,这个结果,并不完美。

2、利用正则表达式来判断

利用正则表达式来-?[0-9]+(\\.[0-9]+)?来做判断字符串是否为数字。
如果传入的数据有很多位,那么使用double会导致精度丢失,这个时候就要用BigDecimal来进行转换。

    public class CheckStrIsNum {           public static void main(String[] args) {                 double aa = -192322.1212;                String a = "-192322.1212";              String b = "-192322a1212";                 String c = "Java";              String d = "5";                /** 判断是否全为数字 */                                 System.out.println(checkStrIsNum02(Double.toString(aa)));                    System.out.println(checkStrIsNum02(a));                    System.out.println(checkStrIsNum02(b));                    System.out.println(checkStrIsNum02(c));                    System.out.println(checkStrIsNum02(d));         }                private static Pattern NUMBER_PATTERN = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");        /**          * 利用正则表达式来判断字符串是否为数字          */         public static boolean checkStrIsNum02(String str) {             String bigStr;             try {                      /** 先将str转成BigDecimal,然后在转成String */                bigStr = new BigDecimal(str).toString();             } catch (Exception e) {                 /** 如果转换数字失败,说明该str并非全部为数字 */                return false;             }             Matcher isNum = NUMBER_PATTERN.matcher(str);             if (!isNum.matches()) {                    return false;             }              return true;        }    }

相关文章