Como capitalizar o primeiro caractere de cada palavra em uma string

Existe uma função embutida em Java que capitaliza o primeiro caractere de cada palavra em uma String e não afeta as outras?

Exemplos:

jon skeet ->Jon Skeetmiles o'Brien ->Miles O'Brien (B permanece capital, isso exclui o título do caso)old mcdonald ->Old Mcdonald*

* (Old McDonald seria encontrar também, mas eu não espero que seja tão inteligente.)

Um rápido olhar para oDocumentação de Cadeia Java revela apenastoUpperCase() etoLowerCase(), que obviamente não fornecem o comportamento desejado. Naturalmente, os resultados do Google são dominados por essas duas funções. Parece uma roda que já deve ter sido inventada, então não faria mal perguntar para que eu possa usá-la no futuro.

questionAnswers(30)

yourAnswerToTheQuestion