比较两个长字符串

时间:2014-01-27 12:18:42

标签: java string

我想比较两个有这些形式的字符串

s1="1390785186301"
s2="1390785191301"

我应该将它们转换为long,然后与>进行比较,还是有方法?

6 个答案:

答案 0 :(得分:1)

如果要比较两个字符串,只需使用compareTo方法

if(s1.length() == s2.length()){    
    if(s1.compareTo(s2) > 0) {//then s1 is greater...}
}

看看javadoc

String#compareTo

答案 1 :(得分:1)

如果您不确定,请考虑使用this natural comparator,如果您的字符串中只有数字。

答案 2 :(得分:1)

使用字符串比较的问题是,在字符串中,比较12出现在9之前,而不是之后。

您需要将其转换为long(如果它适合64位整数范围内)或BigInteger,然后使用它们进行比较。

长期以来:

 if (Long.parseLong(str1) > Long.parseLong(str2)) {
 }

或:

 int comparison = Long.compare(Long.parseLong(str1), Long.parseLong(str2));

最后一个选项是做你自己的字符串比较器,它从字符串的开头扫描,一次比较一个数字,但如果字符串不相等,则将较短的字符串视为用0填充。 / p>

答案 3 :(得分:0)

这里完整且

   public class Comparetion {
    public static void main(String args[]){
        String s1="1390785186301";
        String s2="1390785191301";


        if (s1.compareTo(s2) == 0) {
            System.out.println("s1 and S2 its same");
        }
        if (s1.compareTo(s2) > 0) {
            System.out.println("S1 is bigger then s2");
        }
        if (s1.compareTo(s2) < 0) {
            System.out.println("S2 is less then S1");
        }
    }

}

public class Comparetion {
    public static void main(String args[]){
        String s1="1390785186301";
        String s2="1390785191301";


        if (Long.parseLong(s1) < Long.parseLong(s2)) {
            System.out.println("s1 is less then s2");
        }
        else if(Long.parseLong(s1) > Long.parseLong(s2)){

            System.out.println("s1 is bigger then s2");
        }
        else{
            System.out.println("s1 and s2 are same.");

        }
    }

}
有两种可能性。但是在比较的情况下会得到例外情况。

答案 4 :(得分:-1)

if (new Long(s1) > new Long(s2))
    // do your thing

我认为没有理由不为此创造多头。

以下是更多信息:http://docs.oracle.com/javase/6/docs/api/java/lang/Long.html#Long%28java.lang.String%29

答案 5 :(得分:-1)

根据您的需要,您可以检查两个字符串是否包含与equals方法完全相同的值(假设没有前导零,并且两个数字都使用相同的表示法表示,例如"101"和{{ 1}}表示相同的值,但字符串不相等)。

但是如果你想检查哪个字符串包含更大的值字符串没有提供太多帮助。它有自己的"1.01E2"方法,但它使用字母顺序,如果

,可能会失败
  • 字符串的长度不同:就像compareTo将放在字典ab之前一样,同一规则适用于b "12",这意味着"2"使用此订单
  • 我们正在比较否定值:示例12 < 2按字母顺序排列,但也意味着12 < 13

将字符串转换为正确的数字类型(如-12 < -13Long甚至BigInteger并使用适当的方法(如BigDecimal)会更容易,更安全。

演示

compareTo
String s1 = "1390785186301"; String s2 = "1390785191301"; System.out.println(Long.compare(Long.parseLong(s1), Long.parseLong(s2))); // -1 System.out.println(new BigInteger(s1).compareTo(new BigInteger(s2))); // -1

否定值表示a.compareTo(b),0表示a<b正面 a==b

演示2:

a>b