按字母顺序比较string

String s1 = "Project"; String s2 = "Sunject"; 

我想通过他们的字母顺序比较上面的两个string(在本例中“Project”,然后“Sunject”为“P”在“S”之前)。 有谁知道如何在Java中做到这一点?

String.compareTo可能或可能不是你所需要的。

如果您需要本地化的stringsorting,请查看此链接。

看看String.compareTo方法。

 s1.compareTo(s2) 

从javadocs:

如果此string对象按照字典顺序排列在参数string之前,则结果为负整数。 如果此String对象在字典顺序上跟随参数string,则结果为正整数。 如果string相等,结果为零; 当equals(Object)方法返回true时,compareTo返回0。

 String a = "..."; String b = "..."; int compare = a.compareTo(b); if (compare < 0) { //a is smaller } else if (compare > 0) { //a is larger } else { //a is equal to b } 

你可以调用string的compareTo方法(java.lang.String.compareTo)。 java文档站点上详细logging了这个特性。

这是一个简短的程序,演示它:

 class StringCompareExample { public static void main(String args[]){ String s1 = "Project"; String s2 = "Sunject"; verboseCompare(s1, s2); verboseCompare(s2, s1); verboseCompare(s1, s1); } public static void verboseCompare(String s1, String s2){ System.out.println("Comparing \"" + s1 + "\" to \"" + s2 + "\"..."); int comparisonResult = s1.compareTo(s2); System.out.println("The result of the comparison was " + comparisonResult); System.out.print("This means that \"" + s1 + "\" "); if(comparisonResult < 0){ System.out.println("lexicographically precedes \"" + s2 + "\"."); }else if(comparisonResult > 0){ System.out.println("lexicographically follows \"" + s2 + "\"."); }else{ System.out.println("equals \"" + s2 + "\"."); } System.out.println(); } } 

这是一个现场演示,展示它的工作原理: http : //ideone.com/Drikp3

对于国有化后的字母顺序,请使用Collator

 //Get the Collator for US English and set its strength to PRIMARY Collator usCollator = Collator.getInstance(Locale.US); usCollator.setStrength(Collator.PRIMARY); if( usCollator.compare("abc", "ABC") == 0 ) { System.out.println("Strings are equivalent"); } 

有关支持的语言环境的列表,请参阅JDK 8和JRE 8支持的语言环境 。