Existe-t-il une fonction intégrée à Java qui met en majuscule le premier caractère de chaque mot d'une chaîne et n'affecte pas les autres?
Exemples:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B reste capital, cela exclut le titre)old mcdonald
->Old Mcdonald
*
* ( Old McDonald
serait trouver aussi, mais je ne m'attends pas à ce que ce soit intelligent.)
Un rapide coup d'œil à la documentation de la chaîne Java révèle seulement toUpperCase()
et toLowerCase()
, qui bien sûr ne fournissent pas le comportement souhaité. Naturellement, les résultats de Google sont dominés par ces deux fonctions. Cela ressemble à une roue qui doit déjà avoir été inventée, donc ça ne fait pas de mal de demander donc je peux l'utiliser à l'avenir.
old mcdonald
? Cela devrait-il devenirOld McDonald
?Réponses:
WordUtils.capitalize(str)
(d'après apache commons-text )(Remarque: si vous devez
"fOO BAr"
devenir"Foo Bar"
, utilisezcapitalizeFully(..)
plutôt)la source
WordUtils.capitalizeFully(str)
solution aussi.Si vous ne vous inquiétez que de la première lettre du premier mot en majuscule:
la source
line
être nul ou avoir une longueur <2.La méthode suivante convertit toutes les lettres en majuscules / minuscules, selon leur position à proximité d'un espace ou d'autres caractères spéciaux.
la source
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
àpreviousCharIsLetter
.Essayez cette méthode très simple
example givenString = "ram est bon garçon"
La sortie sera: Ram Is Good Boy
la source
J'ai écrit une petite classe pour mettre en majuscule tous les mots d'une chaîne.
Facultatif
multiple delimiters
, chacun avec son comportement (capitaliser avant, après ou les deux, pour gérer des cas commeO'Brian
);En option
Locale
;Ne rompt pas avec
Surrogate Pairs
.DÉMO EN DIRECT
Production:
Remarque: la première lettre sera toujours en majuscule (modifiez la source si vous ne le souhaitez pas).
Partagez vos commentaires et aidez-moi à trouver des bugs ou à améliorer le code ...
Code:
la source
la source
J'ai fait une solution en Java 8 qui est IMHO plus lisible.
L'essentiel de cette solution peut être trouvé ici: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
la source
L'utilisation le
org.apache.commons.lang.StringUtils
rend très simple.la source
StringUtils.capitalise(str)
est obsolète. Voir: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/...Avec ce code simple :
Résultat: bonjour
la source
J'utilise la fonction suivante. Je pense que c'est plus rapide dans les performances.
la source
Depuis Java 9+
vous pouvez utiliser
String::replaceAll
comme ceci:Exemple :
Les sorties
la source
Utilisez la méthode Split pour diviser votre chaîne en mots, puis utilisez les fonctions de chaîne intégrées pour mettre en majuscule chaque mot, puis ajoutez-les ensemble.
Pseudo-code (ish)
À la fin, la chaîne ressemble à "La phrase à laquelle vous souhaitez appliquer des majuscules"
la source
Cela peut être utile si vous devez mettre des titres en majuscule. Il met en majuscule chaque sous-chaîne délimitée par
" "
, à l'exception des chaînes spécifiées telles que"a"
ou"the"
. Je ne l'ai pas encore couru parce qu'il est tard, ça devrait aller. Utilise Apache CommonsStringUtils.join()
à un moment donné. Vous pouvez le remplacer par une simple boucle si vous le souhaitez.la source
la source
la source
J'ai décidé d'ajouter une autre solution pour mettre les mots en majuscule dans une chaîne:
Une fonction:
Exemple d'appel:
Résultat:
la source
Utilisation:
la source
Il existe plusieurs façons de convertir la première lettre du premier mot en majuscule. J'ai une idée. C'est très simple:
la source
la source
Voici une fonction simple
la source
C'est juste une autre façon de procéder:
la source
Méthode réutilisable pour intiCap:
la source
Voici ma solution.
J'ai rencontré ce problème ce soir et j'ai décidé de le rechercher. J'ai trouvé une réponse de Neelam Singh qui était presque là, alors j'ai décidé de résoudre le problème (cassé sur les chaînes vides) et provoqué un plantage du système.
La méthode que vous recherchez est nommée
capString(String s)
ci-dessous. Il transforme "Il est seulement 5 heures du matin ici" en "Il est seulement 5 heures du matin ici".Le code est assez bien commenté, alors profitez-en.
la source
1. Flux Java 8
Exemples:
Pour
foo bAR
toFoo Bar
, remplacez lamap()
méthode par ce qui suit:2.
String.replaceAll()
(Java 9+)Exemples:
3. Texte Apache Commons
Pour titlecase:
Pour plus de détails, consultez ce didacticiel .
la source
Pour ceux d'entre vous qui utilisent Velocity dans votre MVC, vous pouvez utiliser la
capitalizeFirstLetter()
méthode de la classe StringUtils .la source
la source
la source
Si vous préférez la goyave ...
la source
la source
La manière courte et précise est la suivante:
Cela fonctionne sans erreur si vous essayez de changer la valeur du nom en trois valeurs. Sans erreur.
la source