2013-04-02 208 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));