判斷一個字符串是否為數字,要考慮幾種情況:
1. 該字符串是 "0"
2. 零點幾
3. 整數部分大于等于1,但是首字符不能為'0'
考慮上面幾種情況,如將字符串轉化為字符數組去判斷,未免麻煩,我們可以嘗試使用Java本身的一些工具來實現該功能。
一.利用正則表達式
查詢JDK文檔的Pattern與Matcher類,可得出如下代碼:
注:正則表達式 [1-9]\\d*(\\.\\d+){0,1},代表不以0開頭的數字,其中(\\.\\d+){0,1}表示把(\\.\\d+)看成一個組,即 小數點數字(至少一個數字) 這個組, 出現0或者1次。
也可直接 inputString.matches("^[1-9]\\d*(\\.\\d+)?$") //[1-9]開頭的數字,使用String的matches方法,來比對正則表達式
正則表達式(\\+|\\-)?(([1-9]\\d*)|0)(\\.\\d+)?還可以對正負號進行判定,(\\+|\\-)? 正負號的判定也可寫成[+-]?,(([1-9]\\d*)|0)對0或者非0開頭的字符串進行判定,(\\.\\d+)?對小數點后的進行判定。看來正則表達式真的很有用。呵呵
不過這種方法依然麻煩,其實java的類庫提供有更好的方法來判斷一個字符串是否為合法的數
二.利用NumberFormat和Number類
關于這兩個類的介紹大家可以自己看看文檔
相比較來說,第二種方法更簡潔而且也不用考慮國際化的問題(歐洲國家,小數點都是逗號,千分位是點,上述第一種方法就不使用了),一群牛人都已經幫你考慮好。不過通過第一種方法我們可以學到正則表達式的用法。呵呵
看來用Java還是要多學會利用Java本身的類庫。
Powered by: BlogJava Copyright © zhrb