私はこの方法を知っています
val str=org.Apache.commons.lang.WordUtils.capitalizeFully("is There any other WAY"))
知りたいのは、同じことをする他の方法があります。
Scalaスタイルの何か
文字列の最初の文字を大文字にします:
"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
少し複雑で、splitを使用して文字列のリストを取得し、capitalizeを使用してからreduceを使用して文字列を取得できます。
scala> "is There any other WAY".split(" ").map(_.capitalize).mkString(" ")
res5: String = Is There Any Other WAY
これはセパレータに関係なくすべての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'.
区切り文字にかかわらずすべての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