Java-mettre la première lettre en majuscules

Résolu
popo15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je souhaiterai faire un programme java (sous eclipse) qui met la première lettre d'un mot composé en majuscule.
Par exemple : en entrée : la la
sortie: La La

Je ne sais pas comment m'y prendre pour le deuxième mot.
Merci d'avance.

Cordialement.
popo15
A voir également:

8 réponses

Utilisateur anonyme
 
Salut,

J'ai justement un petit code que j'ai légèrement modifié pour faire çà.
Je le poste même si c'est résolu...

// AVEC SPLIT ET REGEX
      
      // test avec une des "chaine1" ci-dessous
         //String chaine1 = "la          la";
         //String chaine1 = "ba be bi bo bu";
         //String chaine1 = "1er   la,       2eme la";
         String chaine1 = "1234 5678 abc";
         System.out.println("");
      	
         String chaine2 = "";
         
         // compilation de la regex
         Pattern patern = Pattern.compile(" ");    //(" "); // le séparateur est un espace
         // éclatement en sous-chaînes
         String[] sousChaines = patern.split(chaine1);
         for(int i = 0; i < sousChaines.length; i++)
         {
            {
               if(!sousChaines[i].equals(""))
               {
                  String ch2 = sousChaines[i].substring(0, 1);
                  ch2 = ch2.toUpperCase();
                  ch2+= sousChaines[i].substring(1) + " "; // on ajoute 1 espace entre les 2 sous-chaines
                                                           // mais aussi apres la derniere ***
                  chaine2+= ch2;
               }  
            }
         }
         System.out.println("chaine1 = \"" + chaine1 + "\"");
         chaine2 = chaine2.trim(); // *** suppression de l'espace final
         System.out.println("chaine2 = \"" + chaine2 + "\"\n");
         
         //Ou bien
         System.out.println("chaine1 avant = \"" + chaine1 + "\"");
         chaine2 = chaine2.trim(); // *** suppression de l'espace final
         chaine1 = chaine2;
         System.out.println("chaine1 apres = \"" + chaine1 + "\"");


Ce code peut ètre amélioré!...

Cordialement,

Dan
2
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
il faut que tu cherches dans ta chaine les espaces, et tu sais qu'après un espace tu mets la lettre en majuscule. tout ça en boucle.
1
popo15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Je mets :


String motComposé;
while(i<=motComposé.lenght())
{
char c=motComposé.charAt(i);
if(c==' ')
.......

Je vois pas du tout en faites. Peut tu m'aider un peu plus ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
1) i<=motComposé.lenght() est une mauvaise idée, plutôt " < " que "<=" si tu ne veux pas avoir d'erreur à la fin.

2)utilises une variable booléenne comme "drapeau" pour dire s'il faut mettre en maj ou pas :
String motCompose;

boolean mettreEnMaj = true; 
// faut le mettre à true au départ car la première lettre sera de toutes façon mise en majuscules

char c;
while(i<motCompose.length())
{
  c=motCompose.charAt(i);
  //si le drapeau "mettreEnMaj" vaut vrai, il faut rendre la lettre courante majuscule.
  if (mettreEnMaj) {
    //ici le code qui met la lettre courante en majuscules si c'est une lettre
    // (ne rien faire si ce n'est pas une lettre)
  }

  
  if(c==' ') {
    mettreEnMaj = true;
  } else {
    mettreEnMaj = false;
  }
}



PS et EDIT : Bien sûr il y a des choses inutiles dans mon algorithme, notamment dans le cas où il y a plusieurs espaces à la suite. Mais ce n'est pas bien grave et ça devrait fonctionner.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
popo15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Je comprend ce que tu as écrit mais je suis incappable d'écrire le code dans le if, car moi je mettrai c=c.toUpperCase(), ce qui est impossible vu les types
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
oui c'est vrai. ça va avoir l'air un peu compliqué.

D'ailleurs je viens de penser à un truc : de toutes façons il te faut recréer la liste de départ car les String sont constantes en Java.

Une possibilité est de traduire cette string par un tableau de char (un char [] ) grace à la méthode toCharArray() de ta String de départ.

On va boucler sur les éléments de ton char [] , qu'on pourra modifier.

Ensuite on peut recréer une string à partir de ce char[] grace à un des constructeurs de String.


Pour la boucle :
Ensuite, chaque caractère tu le prends donc du tableau.
Pour le code de mise en majuscule :
Si c'est une lettre (de valeur plus grande ou égale à 'a' mais plus petite ou égale à 'z') et que "mettreEnMaj" est vrai comme avant, alors tu crées une string à partir de ce caractère. (String s = new String(c) ). Ensuite string s2 = s.toUpperCase; fait que s2 contient maintenant une lettre majuscule. Tu n'as qu'à remplacer le ième élément de ton tableau par s2.charAt(0).


sinon, tu fais comme avant la vérification : si c est un espace alors mettre le drapeau à true.
0
popo15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Ok compris. Merci bien pour tes explication.

Bonne soirée.
Cordialement.
popo15
0
Toto
 
description.replaceFirst(".",(description.charAt(0)+"").toUpperCase())
0
mimihh Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir je veux ecirire un programme java capable de reconnaitre les mots composés d'un texte donné. En fait il faut faire une comparaison entre ce texte et un glossaire donné. quelqu'un peut m'aider?? Merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
postez un nouveau sujet, la question n'est pas la même qu'ici
0