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 -
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
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:
- Java majuscule première lettre
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Clavier iphone chiffre et lettre - Guide
- É majuscule - Guide
- Majuscule - Guide
8 réponses
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...
Ce code peut ètre amélioré!...
Cordialement,
Dan
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
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.
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 ?
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 ?
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 :
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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.
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.