web-dev-qa-db-fra.com

Capitaliser la première lettre de chaque mot dans Scala

Je sais de cette façon

val str=org.Apache.commons.lang.WordUtils.capitalizeFully("is There any other WAY"))

Vous voulez savoir s'il existe un autre moyen de faire la même chose.

quelque chose dans le style Scala

28
Govind Singh

Capitalisez la première lettre d'une chaîne:

"is There any other WAY".capitalize
res8: String = Is There any other WAY

Mettez en majuscule la première lettre de chaque mot d'une chaîne:

"is There any other WAY".split(' ').map(_.capitalize).mkString(" ")
res9: String = Is There Any Other WAY

Mettez en majuscule la première lettre d'une chaîne, et mettez tout le reste en majuscule:

"is There any other WAY".toLowerCase.capitalize
res7: String = Is there any other way

Capitalisez la première lettre de chaque mot dans une chaîne, tout en minuscule:

"is There any other WAY".toLowerCase.split(' ').map(_.capitalize).mkString(" ")
res6: String = Is There Any Other Way
102
Michael Zajac

Un peu compliqué, vous pouvez utiliser split pour obtenir une liste de chaînes, puis utiliser majuscule, puis réduire pour récupérer la chaîne:

scala> "is There any other WAY".split(" ").map(_.capitalize).mkString(" ")
res5: String = Is There Any Other WAY
9
Ende Neu

Celui-ci mettra en majuscule chaque mot indépendamment du séparateur et ne nécessitera aucune bibliothèque supplémentaire. Il gérera également correctement l'apostrophe.

scala> raw"\b((?<!\b')\w+)".r.replaceAllIn("this is a test, y'all! 'test/test'.", _.group(1).capitalize)
res22: String = This Is A Test, Y'all! 'Test/Test'.
1
Eugr

Pour capitaliser la première lettre de chaque mot malgré un séparateur:

scala> import com.ibm.icu.text.BreakIterator
scala> import com.ibm.icu.lang.UCharacter

scala> UCharacter.toTitleCase("is There any-other WAY", BreakIterator.getWordInstance)
res33: String = Is There Any-Other Way
0
Sergey Povaliaev