Adloun

programmation Java (école d'ingénieur) · Chapitre 6 · Exercice de TD

Une majuscule à chaque mot

Chaînes de caractères et entrées · niveau 2

Énoncé

Écrire static String capitaliser(String phrase) qui met en majuscule la première lettre de chaque mot et en minuscules les autres : "le PETIT prince" donne "Le Petit Prince". Les espaces doivent être conservés tels quels. Que donne la méthode sur un mot composé comme saint-exupéry ?

Corrigé

On parcourt la phrase en retenant, dans un booléen, si l'on est au début d'un mot.


static String capitaliser(String phrase) {
    StringBuilder sb = new StringBuilder();
    boolean debutDeMot = true;
    for (int i = 0; i < phrase.length(); i++) {
        char c = phrase.charAt(i);
        if (c == ' ') {
            debutDeMot = true;
            sb.append(c);
        } else if (debutDeMot) {
            sb.append(Character.toUpperCase(c));
            debutDeMot = false;
        } else {
            sb.append(Character.toLowerCase(c));
        }
    }
    return sb.toString();
}

L'appel capitaliser("le PETIT prince de saint-exupéry") retourne :


Le Petit Prince De Saint-exupéry

Seul l'espace marque un début de mot. Pour obtenir Saint-Exupéry, il suffit de traiter le tiret comme l'espace (c == ' ' || c == '-').

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →