Mise en majuscule ds 1ere letr d'1 JTextField
Résolu
coolanso
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous, j'ai un JTextField qui doit contenir le prénom de l'utilisateur, il se trouve qu'un utilisateur peut avoir plusieurs prénoms, je voudrais que mon code mette toutes les premières lettres du prénom en majuscules.mon code le fait, mais pas correctement, dés que l'espace entre les prénoms atteint 2 caractères y'a problème. Comment pourrais-je l'améliorer ?
Voici mon code :
private void TxtPrenomEnfantFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
String[] tab= getTxtPrenomEnfant().trim().split(" ");/*Nombre de prénom(s) en rapport avec l'espace entre eux, si cet espace = 1 pas de problème, mais dès qu'il en est supérieur y'a problème*/
String result=" " ;
for(int i=0;i<tab.length;i++){
String leTout=tab[i].substring(1);
String prem=tab[i].substring(0,1).toUpperCase();
result+= prem.concat(leTout).concat(" ");
}
TxtPrenomEnfant.setText(result );
}
Voici mon code :
private void TxtPrenomEnfantFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
String[] tab= getTxtPrenomEnfant().trim().split(" ");/*Nombre de prénom(s) en rapport avec l'espace entre eux, si cet espace = 1 pas de problème, mais dès qu'il en est supérieur y'a problème*/
String result=" " ;
for(int i=0;i<tab.length;i++){
String leTout=tab[i].substring(1);
String prem=tab[i].substring(0,1).toUpperCase();
result+= prem.concat(leTout).concat(" ");
}
TxtPrenomEnfant.setText(result );
}
A voir également:
- Mise en majuscule ds 1ere letr d'1 JTextField
- Mise en forme conditionnelle excel - Guide
- É majuscule - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Majuscule - Guide
- Mettre en majuscule - Guide
2 réponses
trim() enlève les espaces, donc split(" ") n'a plus de sens.
Voici une manière propre de faire (utiliser StringBuilder évite de recréer plein d'objets String comme tu fais avec les += et les concat)
Voici une manière propre de faire (utiliser StringBuilder évite de recréer plein d'objets String comme tu fais avec les += et les concat)
public static String maj(String s) { String[] tab = s.split("\\s"); StringBuilder sb = new StringBuilder(); for (int i=0, n=tab.length; i<n; i++) { sb.append(tab[i].substring(0,1).toUpperCase(Locale.FRANCE)); sb.append(tab[i].substring(1).toLowerCase(Locale.FRANCE)); if (i!=n-1) sb.append(" "); } return sb.toString(); } System.out.println(maj("naPOLéoN boNapARte")); // Napoléon Bonaparte
Salut,
Un petit détail KX:
"trim() enlève les espaces, donc split(" ") n'a plus de sens."
trim() enlève seulement les espaces possibles en début et en fin de l'objet String.
Un petit détail KX:
"trim() enlève les espaces, donc split(" ") n'a plus de sens."
trim() enlève seulement les espaces possibles en début et en fin de l'objet String.
//Dans ce petit code il n'est pas vérifié qu'à partir de la seconde lettre il n'y a que des minuscules. String jtfPrenom = " pierre paul Jacques "; jtfPrenom = jtfPrenom.trim(); // pour supprimer les espaces possibles en début ou fin System.out.println("jtfPrenom = " + jtfPrenom); String[] prenoms = jtfPrenom.split(" +"); for(int i = 0; i < prenoms.length; i++) { //System.out.println("Pénom " + (i+1) + ": " + prenoms[i]); String premLettre = prenoms[i].substring(0,1).toUpperCase(); //System.out.println("premLettre = " + premLettre); String prenomNew = premLettre + prenoms[i].substring(1); //System.out.println("Prenom new " + (i+1) + ": " + prenomNew); prenoms[i] = prenomNew; } // Le résultat: for(int i = 0; i < prenoms.length; i++) { System.out.println("Pénom new " + (i+1) + ": " + prenoms[i]); }
S'il y a plusieurs espaces entre deux noms il faut plutôt considérer split("\\s+") au lieu de split("\\s")