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

内容摘要
java中判断字符串是否是数字的方法如下:1、用Java自带的方法Java中有一个Character.isDig(char ch) public class CheckStrIsNum {
public static void main(S
文章正文

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

1、用Java自带的方法

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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来进行转换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
    }
}

更多java知识请关注java基础教程。

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!