2013-10-19 206 views
10

我想按字母順序排列JAVA中的字符串,如下所示 大寫字母和小寫字母跟在 AaBbCcDdEeFfGg。例如,如果我把AbaC返回給我AabC 謝謝!如何按字母順序排序字符串java

+7

還爲時過早了新的一年的願望,直到那個時候你就必須表現出一定的努力。你試過什麼了? –

回答

13

可以使用Arrays.sort,如果你把字符到一個數組首先做到這一點。 (它必須是Character對象,而不是char元的陣列,以使用自定義不區分大小寫的比較。)

// put the characters into an array 
Character[] chars = new Character[str.length()]; 
for (int i = 0; i < chars.length; i++) 
    chars[i] = str.charAt(i); 

// sort the array 
Arrays.sort(chars, new Comparator<Character>() { 
    public int compare(Character c1, Character c2) { 
     int cmp = Character.compare(
      Character.toLowerCase(c1.charValue()), 
      Character.toLowerCase(c2.charValue()) 
     ); 
     if (cmp != 0) return cmp; 
     return Character.compare(c1.charValue(), c2.charValue()); 
    } 
}); 

// rebuild the string 
StringBuilder sb = new StringBuilder(chars.length); 
for (char c : chars) sb.append(c); 
str = sb.toString(); 
+0

這將分裂UTF-16替代品。 –

2

將字符串轉換爲字符數組,然後比較排序中每個字符的int值。

方法需要: String.toCharArray();

7

你可以嘗試尋找Collections.sort,然後嘗試這樣的: -

Collections.sort(caps, String.CASE_INSENSITIVE_ORDER); 

事情是這樣的: -

private static Comparator<String> ALPHA_ORDER = new Comparator<String>() { 
    public int compare(String str1, String str2) { 
     int x = String.CASE_INSENSITIVE_ORDER.compare(str1, str2); 
     if (x== 0) { 
      x= str1.compareTo(str2); 
     } 
     return x; 
    } 
}; 

Collections.sort(list, ALPHA_ORDER); 

編輯: -

對於字符串按字母順序排序嘗試這樣的: -

Collator col = Collator.getInstance(new Locale("en", "EN")); 
String s = "AbaC"; 
String[] s1= s.split(""); 
Arrays.sort(s1, col); 
String sorted = ""; 
for (int i = 0; i < s1.length; i++) 
{ 
    sorted += s1[i]; 
} 
System.out.println(sorted); 
+1

OP想要對字符串中的字符進行排序,而不是字符串列表。 – Boann

+0

這是一個在字符列表中轉換字符串的問題,這是微不足道的部分。 –

+0

@Boann: - 更新了我的答案。希望能讓它變得更好? –