95 votes

Comment mettre en majuscule la première lettre d'un mot dans une chaîne de caractères ?

J'ai une chaîne de caractères : "hello good old world" et je veux mettre en majuscule la première lettre de chaque mot, et non la chaîne entière avec .toUpperCase(). Existe-t-il une aide java qui fait ce travail ?

128voto

kd304 Points 8369

Jetez un coup d'œil à ACL WordUtils .

WordUtils.capitalize("your string") == "Your String"

0 votes

J'ai essayé. google.at/search?q=java+mot+uppercase Merci quand même

1 votes

WordUtils.capitalize("votre chaîne") sera "Votre chaîne".

0 votes

WordUtils est obsolète

70voto

ndomanyo Points 326

Voici le code

    String source = "hello good old world";
    StringBuffer res = new StringBuffer();

    String[] strArr = source.split(" ");
    for (String str : strArr) {
        char[] stringArray = str.trim().toCharArray();
        stringArray[0] = Character.toUpperCase(stringArray[0]);
        str = new String(stringArray);

        res.append(str).append(" ");
    }

    System.out.print("Result: " + res.toString().trim());

1 votes

Vous n'avez pas compris la question, vous ne mettez en majuscule que la première lettre du premier ( !) mot. il y a plusieurs mots dans une chaîne et vous devez mettre en majuscule la première lettre de chaque mot.

4 votes

+1 J'aime ça, la manière la plus simple. Mais il faut la mettre en boucle, pour répondre aux besoins de la question.

0 votes

Cela peut être amélioré un peu. La longueur de la chaîne de caractères est connue, vous pouvez donc pré-allouer la fonction StringBuilder La longueur de l'appareil. Puisque vous allez appeler StringBuilder.append de toute façon, ne prenez pas la peine de créer un nouveau char[] y String à chaque itération de la boucle : ajoutez simplement la lettre en majuscule, puis le reste du mot à l'aide de la fonction String.charAt y String.substring . Enfin, vous devriez probablement autoriser un Locale à transmettre, vous pouvez utiliser l'option locale-sensible String.toUpperCase(Locale) .

53voto

Gustavo Samico Points 131
sString = sString.toLowerCase();
sString = Character.toString(sString.charAt(0)).toUpperCase()+sString.substring(1);

45voto

tommyL Points 354

Je ne sais pas s'il existe une fonction mais cela ferait l'affaire en cas d'absence de fonction existante :

String s = "here are a bunch of words";

final StringBuilder result = new StringBuilder(s.length());
String[] words = s.split("\\s");
for(int i=0,l=words.length;i<l;++i) {
  if(i>0) result.append(" ");      
  result.append(Character.toUpperCase(words[i].charAt(0)))
        .append(words[i].substring(1));

}

1 votes

Bien, mais words[i].substring(1) ne fonctionnera pas pour les mots d'une seule lettre comme " a ". Il faut d'abord vérifier la longueur.

19voto

roy mathew Points 1542
import org.apache.commons.lang.WordUtils;

public class CapitalizeFirstLetterInString {
    public static void main(String[] args) {
        // only the first letter of each word is capitalized.
        String wordStr = WordUtils.capitalize("this is first WORD capital test.");
        //Capitalize method capitalizes only first character of a String
        System.out.println("wordStr= " + wordStr);

        wordStr = WordUtils.capitalizeFully("this is first WORD capital test.");
        // This method capitalizes first character of a String and make rest of the characters lowercase
        System.out.println("wordStr = " + wordStr );
    }
}

Sortie :

C'est le premier test du capital WORD.

C'est le premier test de la capitale des mots.

0 votes

// Conversion d'une ligne String sss = "Salem this is me" ; String str= sss.replaceFirst(String.valueOf(sss.charAt(0)),String.valueOf((char)(sss.charAt(0)-32))) ; // CapitalizeFirstLetterInString System.out.println(str) ;

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