Si vous devez traiter avec des chaînes de cas mixtes, par exemple edcbaABCDEF, alors vous aurez besoin de faire des choses un peu différemment ...
Arrays.sort() dans les autres réponses ne traite que d'une valeur de caractère numérique, vous obtiendrez edcbaABCDEF => ABCDEFabcde
Tableaux .Sort (arr, comparateur) ne peut être utilisé avec des types d'enveloppe, à savoir le caractère, pas char, vous aurez donc besoin de l'envelopper d'abord.
Character [] wrapped = new Character[charArray.length];
int i = 0;
for (char c : charArray) {
wrapped[i++] = c;
}
Ensuite sorte
Arrays.sort(wrapped, new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return Character.compare(Character.toLowerCase(o1),
Character.toLowerCase(o2));
}
});
Convertir en une chaîne
i = 0;
for (char c : wrapped) {
charArray[i++] = c;
}
System.out.println(new String(charArray));
==> AaBbCcDdEeF
Cela peut être simplifiée en utilisant aide Apache Commons lang ArrayUtils.
String test = "edcbaABCDEF";
Character[] charArray = ArrayUtils.toObject(test.toCharArray());
Arrays.sort(charArray, new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return Character.compare(Character.toLowerCase(o1),
Character.toLowerCase(o2));
}
});
System.out.println(new String(ArrayUtils.toPrimitive(charArray)));
Pourriez-vous afficher un exemple d'entrée et de résultat attendu? – Pshemo
Pourriez-vous nous montrer le code de ce que vous avez essayé jusqu'à présent? –
Malheureusement, je suis loin de mon bureau en ce moment, je vais modifier ce que j'ai quand je reviendrai. –