2013-04-02 206 views
1

我有一個簡單的疑問。如果有人幫助我,會很棒。比較兩個數字字符串值

我有兩個字符串:

String string1 = "4"; // and 
String string2 = "04"; 

兩個值是相等的,但如何將其在Java中比較?我們有equalsequalsIgnoreCase用於比較字符串alpha值,同樣如何比較數值。

+1

新的整數(字符串1)==新的整數(字符串2) – madhairsilence

+2

請... .equals() – msi

+2

@madhairsilence。注意你的方法會失敗,因爲你用'=='來比較兩個'Integer'對象,這可能被認爲是犯罪。 –

回答

17
Integer.parseInt("4") == Integer.parseInt("04") 

這就是它。您可以使用Integer.parseInt(String)方法將數字字符串轉換爲整數,該方法返回int類型。然後比較結果與4 == 4相同。

+1

如果數字長於Int可容納的長度,則不會溢出 –

9
Integer.valueOf(string1).equals(Integer.valueOf(string2)); 
+0

'valueOf(String)'在內部調用'parseInt(String)'幷包裝它。使用'=='比較'parseInt(String)'的結果不需要裝箱。 –

6

不要很長時間值忘了BigInteger

return new BigInteger(s1).compareTo(new BigInteger(s2)); 
0

跳過解析它爲一個int來處理任意大的數字,只比較字符串。作爲獎勵,它也適用於十進制數字(除非有尾隨零,你可能可以做類似的事情,而不是錨定字符串的結尾)。

如果你確定沒有空格字符,你可以omitt微調

String string1 = "4"; // and 
    String string2 = "04"; 

    String noLeadingZeroes1 = string1.trim().replaceFirst("^0+(?!$)", ""); 
    String noLeadingZeroes2 = string2.trim().replaceFirst("^0+(?!$)", ""); 

    System.out.println(noLeadingZeroes1.equals(noLeadingZeroes2));