Existe-t-il des méthodes intégrées permettant de convertir une chaîne de caractères au format Title Case ?
Réponses
Trop de publicités?Apache Commons StringUtils.capitalize() ou Texte commun WordUtils.capitalize()
par exemple WordUtils.capitalize("i am FINE") = "I Am FINE"
de WordUtils doc
Il n'existe pas de méthode capitalize() ou titleCase() dans la classe String de Java. Vous avez deux possibilités :
-
en utilisant commons lang string utils .
StringUtils.capitalize(null) = null StringUtils.capitalize("") = "" StringUtils.capitalize("cat") = "Cat" StringUtils.capitalize("cAt") = "CAt" StringUtils.capitalize("'cat'") = "'cat'"
-
écrire (encore une autre) méthode d'aide statique toTitleCase()
Exemple de mise en œuvre
public static String toTitleCase(String input) {
StringBuilder titleCase = new StringBuilder(input.length());
boolean nextTitleCase = true;
for (char c : input.toCharArray()) {
if (Character.isSpaceChar(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
}
titleCase.append(c);
}
return titleCase.toString();
}
Testcase
System.out.println(toTitleCase("string"));
System.out.println(toTitleCase("another string"));
System.out.println(toTitleCase("YET ANOTHER STRING"));
sorties :
String
Another String
YET ANOTHER STRING
Utilice WordUtils.capitalizeFully() de Apache Commons.
WordUtils.capitalizeFully(null) = null
WordUtils.capitalizeFully("") = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
Vous pouvez utiliser les langages apache commons comme ceci :
WordUtils.capitalizeFully("this is a text to be capitalize")
vous pouvez trouver la doc java ici : WordUtils.capitalizeFully java doc
et si vous voulez supprimer les espaces entre les mondes, vous pouvez utiliser :
StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")
vous pouvez trouver la documentation java pour String StringUtils.remove java doc
J'espère que cela vous aidera.
Voici une autre approche basée sur les réponses de @dfa et @scottb qui traite tous les caractères autres que des lettres ou des chiffres :
public final class TitleCase {
public static String toTitleCase(String input) {
StringBuilder titleCase = new StringBuilder(input.length());
boolean nextTitleCase = true;
for (char c : input.toLowerCase().toCharArray()) {
if (!Character.isLetterOrDigit(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
}
titleCase.append(c);
}
return titleCase.toString();
}
}
Entrée donnée :
MARY ÄNN O'CONNEŽ-ŠUSLIK
le résultat est
Mary Änn O'Connež-Šuslik
- Réponses précédentes
- Plus de réponses