115 votes

Existe-t-il une méthode pour convertir les chaînes de caractères en majuscules ?

Existe-t-il des méthodes intégrées permettant de convertir une chaîne de caractères au format Title Case ?

120voto

aberrant80 Points 4544

Apache Commons StringUtils.capitalize() ou Texte commun WordUtils.capitalize()

par exemple WordUtils.capitalize("i am FINE") = "I Am FINE" de WordUtils doc

65voto

dfa Points 54490

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

21voto

jiehanzheng Points 392

Utilice WordUtils.capitalizeFully() de Apache Commons.

WordUtils.capitalizeFully(null)        = null
WordUtils.capitalizeFully("")          = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"

10voto

Vegegoku Points 111

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.

8voto

mrts Points 472

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X