Willful Wizard Willful Wizard - 7 months ago 12
Java Question

How to capitalize the first character of each word in a string

Is there a function built into Java that capitalizes the first character of each word in a String, and does not affect the others?

Examples:


  • jon skeet
    ->
    Jon Skeet

  • miles o'Brien
    ->
    Miles O'Brien
    (B remains capital, this rules out Title Case)

  • old mcdonald
    ->
    Old Mcdonald
    *



*(
Old McDonald
would be find too, but I don't expect it to be THAT smart.)

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.

Answer

WordUtils.capitalize(str) (from apache commons-lang)

(Note: if you need "fOO BAr" to become "Foo Bar", then use capitalizeFully(..) instead)