溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java有幾種方法可以判斷字符串是否是數(shù)字

發(fā)布時(shí)間:2020-06-26 11:34:59 來(lái)源:億速云 閱讀:189 作者:Leah 欄目:編程語(yǔ)言

java有幾種方法可以判斷字符串是否是數(shù)字?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

1、用Java自帶的方法

Java中有一個(gè)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";    
            /** 判斷是否全為數(shù)字 */                     
            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方法進(jìn)行處理
         */
        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應(yīng)該返回false才對(duì),但是卻返回true,而"5"應(yīng)該返回true,也是結(jié)果錯(cuò)誤。由此可見(jiàn),這個(gè)結(jié)果,并不完美。

2、利用正則表達(dá)式來(lái)判斷

利用正則表達(dá)式來(lái)-?[0-9]+(\\.[0-9]+)?來(lái)做判斷字符串是否為數(shù)字。
如果傳入的數(shù)據(jù)有很多位,那么使用double會(huì)導(dǎo)致精度丟失,這個(gè)時(shí)候就要用BigDecimal來(lái)進(jìn)行轉(zhuǎn)換。

    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";    
            /** 判斷是否全為數(shù)字 */                     
            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]+)?");
        /** 
         * 利用正則表達(dá)式來(lái)判斷字符串是否為數(shù)字 
         */
         public static boolean checkStrIsNum02(String str) { 
            String bigStr; 
            try {      
                /** 先將str轉(zhuǎn)成BigDecimal,然后在轉(zhuǎn)成String */
                bigStr = new BigDecimal(str).toString(); 
            } catch (Exception e) { 
                /** 如果轉(zhuǎn)換數(shù)字失敗,說(shuō)明該str并非全部為數(shù)字 */
                return false; 
            } 
            Matcher isNum = NUMBER_PATTERN.matcher(str); 
            if (!isNum.matches()) {    
                return false; 
            }  
            return true;
        }
    }

關(guān)于java有幾種方法可以判斷字符串是否是數(shù)字問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI