如何将字符串中每个单词的第一个字符大写

Java中是否内置了一个函数,可以将字符串中每个单词的第一个字符大写,而不会影响其他字符?

例子:

  • jon skeet -> Jon Skeet
  • miles o'Brien -> Miles O'Brien(B仍然是大写的,这排除了标题大小写)
  • old mcdonald -> Old Mcdonald*

*(Old McDonald也会被发现,但我不期望它那么聪明。

快速浏览一下 Java 字符串文档,就会发现 只有 和 ,这当然不能提供所需的行为。当然,谷歌的结果是由这两个功能主导的。这似乎是一个已经发明的轮子,所以问问我将来可以使用它并没有什么坏处。toUpperCase()toLowerCase()


答案 1

WordUtils.capitalize(str) (来自 apache commons-text)

(注意:如果你需要成为,那么使用代替)"fOO BAr""Foo Bar"capitalizeFully(..)


答案 2

如果您只担心第一个单词的第一个字母大写:

private String capitalize(final String line) {
   return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}