java中如何判斷一個String 是否可以強制轉換成Integer


簡述

項目中有時候需要判斷一個String 的字符串能不能轉換成 int,我在搜索引擎上搜索到時候發現有人問過同樣的問題,但是回答者會有String 怎么能轉換成Integer 的疑問,這里標注一下,同時也為了以后自己看到時候不要引起誤導。這里說的是,例如 String str1 = 123 或者 String str2 = 0.44 這樣的String, 可以說它們是String 類型的數字。

解決方法 

方法一:正則表達式

             我們可以通過正則表達式,判斷接收到的String 中有沒有字母從而來判斷這個String 能否轉換成 int,這里就不把正則表達式附上了,網上有很多,畢竟菜鳥,自己寫怕遺漏了什么。。

方法二:StringIndexOutOfBoundsException 異常

             當把不能轉換成 int 的String 強制轉換的時候,會拋出 StringIndexOutOfBoundsException 異常,我們可以將錯就錯,利用這個異常,即,如果拋出了此異常則 該String 不能轉換成 int,否則可以。

String date = 201311;
try {
    int year =Integer.valueOf(date.substring(0, 4));
    int month=Integer.valueOf(date.substring(4,6));
    // 如果沒拋出異常,則 date 可以正確轉換成 int
 
         
}catch(StringIndexOutOfBoundsException e){
    // 如果拋出異常,則 date 不能轉換成 int
}
 
        

但這種靠異常來判斷的做法感覺不是很好。

方法三:工具類 NumberUtils(推薦) 在 commons-lang.jar 中,有個Util 類, NumberUtils,其中包括兩個方法:

1.
NumberUtils.isDigits(String str)
 
         
Checks whether the String contains only digit characters.
 
         
Null and empty String will return false.
 
         
Parameters:
str the String to check
Returns:
true if str contains only Unicode numeric
 
2.
NumberUtils.isNumber(String str)
 
         
Checks whether the String a valid Java number.
 
         
Valid numbers include hexadecimal marked with the 0x qualifier, scientific notation and numbers marked with a type qualifier (e.g. 123L).
 
         
Null and empty String will return false.
 
         
Parameters:
str the String to check
Returns:
true if the string is a correctly formatted number

正如描述中說的:

             NumberUtils.isDigits(str)     //判斷str是否整數, true-整數  false-非整數
             NumberUtils.isNumber(str)  //判斷str是否數字(整數、小數、科學計數法等等格式)

         自己寫正則表達式擔心出錯的同學可以試試這個工具類,雖然 工具類也是人寫的也可能出錯,但發布出來,用的人多,估計有錯誤也會更快被發現,如果還不放心也可以先看看其中的源碼。

 

另外,commons-lang.jar 除了包含這一個 Utils 之外還有很多,如 ArrayUtils,BooleanUtils,CharSequenceUtils 等,在此不一一列舉。commons-lang.jar 的下載地址可以到

下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM