Или версия с простым разделением:
public static String capWords(String s) {
if (s == null && s.isEmpty()) {
return s;
} else {
StringBuilder sb = new StringBuilder();
for (String token : s.split(" ")) {
if (token.isEmpty()) {
if (sb.length() > 0) {
sb.append(" ");
}
} else {
if (sb.length() > 0) {
sb.append(" ");
}
sb.append(Character.toUpperCase(token.charAt(0)));
if (token.length() > 1) {
sb.append(token.substring(1).toLowerCase());
}
}
}
return sb.toString();
}
}
Примечание : эта версия также обрезает начальные / конечные пробелы (что может или не может быть желательно)