如何将字符串中每个单词的第一个字符大写
Java 中是否有一个函数可以将字符串中每个单词的第一个字符大写,并且不影响其他字符?
Is there a function built into Java that capitalizes the first character of each word in a String, and does not affect the others?
示例:
-
乔恩·斯基特->乔恩·斯基特 -
miles o'Brien->Miles O'Brien(B 仍然是大写,这排除了 Title Case) -
老麦当劳->老麦当劳*
-
jon skeet->Jon Skeet -
miles o'Brien->Miles O'Brien(B remains capital, this rules out Title Case) -
old mcdonald->Old Mcdonald*
*(Old McDonald 也会被找到,但我不希望它那么聪明.)
*(Old McDonald would be find too, but I don't expect it to be THAT smart.)
快速浏览 Java 字符串文档 仅显示 toUpperCase() 和 toLowerCase(),这当然不能提供所需的行为.自然,谷歌搜索结果由这两个功能主导.这似乎是一个必须已经发明的轮子,所以我可以问一下,以便我将来可以使用它.
A quick look at the Java String Documentation reveals only toUpperCase() and toLowerCase(), which of course do not provide the desired behavior. Naturally, Google results are dominated by those two functions. It seems like a wheel that must have been invented already, so it couldn't hurt to ask so I can use it in the future.
WordUtils.capitalize(str)(来自 apache commons-text)
(注意:如果需要"fOO BAr"成为"Foo Bar",那么使用capitalizeFully(..)代替)
(Note: if you need "fOO BAr" to become "Foo Bar", then use capitalizeFully(..) instead)