web-dev-qa-db-ja.com

Scalaですべての単語の最初の文字を大文字にする

私はこの方法を知っています

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

知りたいのは、同じことをする他の方法があります。

Scalaスタイルの何か

28
Govind Singh

文字列の最初の文字を大文字にします:

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

文字列内のすべての単語の最初の文字を大文字にします。

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

文字列の最初の文字を大文字にし、その他すべてを小文字にします。

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

文字列内のすべてのWordの最初の文字を大文字にし、それ以外はすべて小文字にします。

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

少し複雑で、splitを使用して文字列のリストを取得し、capitalizeを使用してからreduceを使用して文字列を取得できます。

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

これはセパレータに関係なくすべてのWordを大文字にし、追加のライブラリを必要としません。また、アポストロフィを正しく処理します。

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

区切り文字にかかわらずすべてのWordの最初の文字を大文字にするには:

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