簡體   English   中英

比較兩個數字字符串值

[英]compare two numeric String values

我有一個簡單的疑問。 如果有人幫助我,那就太好了。

我有兩個字符串:

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

兩個值都相等但是如何在java中比較它們? 我們有equalsequalsIgnoreCase用於比較字符串 alpha 值,類似於如何比較數值。

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

這就對了。 您可以使用Integer.parseInt(String)方法將數字字符串轉換為整數,該方法返回int類型。 然后比較與4 == 4相同。

不要忘記BigInteger非常長的值。

return new BigInteger(s1).compareTo(new BigInteger(s2));
Integer.valueOf(string1).equals(Integer.valueOf(string2));

使用 Integer 類將字符串轉換為整數。

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29

Integer.parseInt(string1) == Integer.parseInt(string2)

完全跳過將其解析為 int 以處理任意大的數字,僅比較字符串。 作為獎勵,它也適用於十進制數(除非有尾隨零,你可能可以用錨定字符串結尾來做類似的事情)。

如果您確定沒有空格字符,則可以省略修剪

    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));

比較是在字符的基礎上進行的。 所以 '2' > '12' 是真的,因為比較將發生為 '2' > '1' 並且按字母順序 '2' 總是大於 '1' 作為 unicode。 所以它會成真。

if(String.valueOf(S1).compareTo(String.valueOf(S2)) < 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM