将Scala中每个单词的第一个字母大写

时间:2014-09-11 12:46:19

标签: string scala capitalization

我知道这种方式

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

想知道还有其他方法可以做同样的事。

Scala风格的东西

4 个答案:

答案 0 :(得分:104)

大写字符串的第一个字母:

"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

将字符串中每个单词的第一个字母大写,而将其他所有单词大写:

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

答案 1 :(得分:9)

有点复杂,您可以使用split来获取字符串列表然后使用大写,然后使用reduce来获取字符串:

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

答案 2 :(得分:1)

无论分隔符如何,这个都将大写每个单词,并且不需要任何其他库。它也会正确处理撇号。

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'.

答案 3 :(得分:0)

尽管有一个分隔符,但要大写每个单词的第一个字母:

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