I want to sort a string in JAVA alphabetically, as follows Capital letter and lowercase letter followed AaBbCcDdEeFfGg. for example if I put AbaC return me AabC thanks!!
3 Answers
You can do this using Arrays.sort, if you put the characters into an array first. (It must be an array of Character objects rather than char primitives, in order to use a custom case-insensitive comparator.)
// 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();
1 Comment
Mike Samuel
This will split UTF-16 surrogates.
You may try to look for Collections.sort and then try like this:-
Collections.sort(caps, String.CASE_INSENSITIVE_ORDER);
Something like this:-
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);
EDIT:-
For sorting alphabetically in a string try like this:-
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);
7 Comments
Boann
OP wants to sort characters in strings, not a list of strings.
Jeroen Vannevel
Which is a matter of turning the string in a list of characters, that's the trivial part.
Rahul Tripathi
@Boann:- Updated my answer. Hope that makes it better?
Boann
Now it doesn't handle the case-insensitive requirement.
Rahul Tripathi
@Boann:- Yes corrected that!
|