Exemples de chaînes
one thousand only
two hundred
twenty
seven
Comment changer le premier caractère d'une chaîne en majuscule et ne pas changer la casse des autres lettres?
Après le changement, cela devrait être:
One thousand only
Two hundred
Twenty
Seven
Remarque: je ne veux pas utiliser l'apache.commons.lang.WordUtils pour ce faire.
Réponses:
Si vous souhaitez uniquement mettre en majuscule la première lettre d'une chaîne nommée
input
et laisser le reste tranquille:Maintenant
output
, vous aurez ce que vous voulez. Vérifiez que votreinput
est au moins un caractère bien avant de l'utiliser, sinon vous obtiendrez une exception.la source
Juste ... une solution complète, je vois que ça a fini par combiner ce que tout le monde a fini par poster = P.
la source
return original.length() == 0 ? original : original.substring(0, 1).toUpperCase() + original.substring(1);
if length() == 0
ne pouvons-nous pas dire en toute sécurité que c'est""
et retourner cela au lieu deoriginal
? Nous sauve quelques personnages dans une ligne. Je demande parce que j'ai l'impression que Java est un langage si plein de gotcha, je ne serais honnêtement pas surpris s'il y avait une autre façon d'avoir une chaîne de longueur zéro.String.toUpperCase(Locale)
une chaîne arbitraire, car les paramètres régionaux doivent correspondre au texte. Oui, il devrait être utilisé, mais il n'est pas toujours clair lequelLocale
utiliser ...Le moyen le plus simple est d'utiliser la
org.apache.commons.lang.StringUtils
classeStringUtils.capitalize(Str);
la source
capitalize
?En outre, il existe
org.springframework.util.StringUtils
dans Spring Framework :la source
StringUtils.capitalize(str)
de apache commons-lang .
la source
la source
la source
Voilà (j'espère que cela vous donne l'idée):
la source
StdIn
etStdOut
n'est pas très Java-y. :-)Son simple code d'une seule ligne est nécessaire pour cela. si
String A = scanner.nextLine();
alors vous devez écrire ceci pour afficher la chaîne avec cette première lettre en majuscule.System.out.println(A.substring(0, 1).toUpperCase() + A.substring(1));
Et c'est fait maintenant.
la source
Exemple d'utilisation de la classe StringTokenizer:
la source
Solution avec StringBuilder:
.. basé sur les réponses précédentes
la source
En ajoutant tout ensemble, c'est une bonne idée de couper pour un espace blanc supplémentaire au début de la chaîne. Sinon, .substring (0,1) .toUpperCase essaiera de mettre en majuscule un espace blanc.
la source
Mon approche fonctionnelle. son caractère majuscule dans la phrase après le blanc dans le paragraphe entier.
Pour capatiliser uniquement le premier caractère du mot, supprimez simplement .split ("")
la source
Mise à jour juillet 2019
Actuellement, la fonction de bibliothèque la plus à jour pour ce faire est contenue dans
org.apache.commons.lang3.StringUtils
Si vous utilisez Maven, importez la dépendance dans votre pom.xml:
la source
Même pour du code "simple", j'utiliserais des bibliothèques. Le problème n'est pas le code en soi, mais les cas de test déjà existants couvrant des cas exceptionnels. Cela pourrait être
null
des chaînes vides, des chaînes dans d'autres langues.La partie manipulation de mots a été retirée de Apache Commons Lang. Il est maintenant placé dans Apache Commons Text . Obtenez-le via https://search.maven.org/artifact/org.apache.commons/commons-text .
Vous pouvez utiliser WordUtils.capitalize (String str) à partir d'Apache Commons Text. Il est plus puissant que vous ne l'aviez demandé. Il peut également capitaliser le fulle (par exemple, la fixation
"oNe tousand only"
).Puisqu'il fonctionne sur du texte complet, il faut lui dire de ne mettre en majuscule que le premier mot.
Classe JUnit complète pour permettre de jouer avec la fonctionnalité:
la source
si vous souhaitez uniquement mettre en majuscule la première lettre, le code ci-dessous peut être utilisé
la source
En fait, vous obtiendrez les meilleures performances si vous évitez l'
+
opérateur et l'utilisationconcat()
dans ce cas. C'est la meilleure option pour fusionner seulement 2 chaînes (pas si bon pour de nombreuses chaînes cependant). Dans ce cas, le code ressemblerait à ceci:la source
Utilisez ceci:
la source
Étant donné la
input
chaîne:la source
Vous pouvez essayer le code suivant:
la source
la source
Je voudrais ajouter une vérification NULL et IndexOutOfBoundsException sur la réponse acceptée.
Code Java:
Production:
la source
Ce qui suit vous donnera la même sortie cohérente quelle que soit la valeur de votre chaîne d'entrée:
la source
1. Utilisation de la
substring()
méthode de StringMaintenant, appelez simplement la
capitalize()
méthode pour convertir la première lettre d'une chaîne en majuscules:2. Apache Commons Lang
La
StringUtils
classe de Commons Lang fournit lacapitalize()
méthode qui peut également être utilisée à cette fin:Ajoutez la dépendance suivante à votre
pom.xml
fichier (pour Maven uniquement):Voici un article qui explique ces deux approches en détail.
la source
la source