Вопрос-ответ

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

Как писать с заглавной буквы первый символ каждого слова в строке

Есть ли встроенная в Java функция, которая записывает с заглавной буквы первый символ каждого слова в строке и не влияет на остальные?

Примеры:


  • jon skeet -> Jon Skeet

  • miles o'Brien -> Miles O'Brien (B остается заглавной, это исключает регистр заголовка)

  • old mcdonald -> Old Mcdonald*

*(Old McDonald тоже можно было бы найти, но я не ожидаю, что это будет НАСТОЛЬКО умно.)

Быстрый просмотр документации по Java String показывает только toUpperCase() и toLowerCase(), которые, конечно, не обеспечивают желаемого поведения. Естественно, в результатах Google преобладают эти две функции. Похоже, что колесо, которое, должно быть, уже изобрели, поэтому не помешает спросить, чтобы я мог использовать его в будущем.

Переведено автоматически
Ответ 1

WordUtils.capitalize(str) (из apache commons-текст)

(Примечание: если вам нужно "fOO BAr" стать "Foo Bar", то используйте capitalizeFully(..) вместо этого)

Ответ 2

Если вас беспокоит только то, что первая буква первого слова пишется с заглавной буквы:

private String capitalize(final String line) {
return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}
Ответ 3

Следующий метод преобразует все буквы в верхний / нижний регистр, в зависимости от их положения рядом с пробелом или другими специальными символами.

public static String capitalizeString(String string) {
char[] chars = string.toLowerCase().toCharArray();
boolean found = false;
for (int i = 0; i < chars.length; i++) {
if (!found && Character.isLetter(chars[i])) {
chars[i] = Character.toUpperCase(chars[i]);
found = true;
} else if (Character.isWhitespace(chars[i]) || chars[i]=='.' || chars[i]=='\'') { // You can add other chars here
found = false;
}
}
return String.valueOf(chars);
}
Ответ 4

Попробуйте этот очень простой способ

приведенный пример string="ram - хороший мальчик"

public static String toTitleCase(String givenString) {
String[] arr = givenString.split(" ");
StringBuffer sb = new StringBuffer();

for (int i = 0; i < arr.length; i++) {
sb.append(Character.toUpperCase(arr[i].charAt(0)))
.append(arr[i].substring(1)).append(" ");
}
return sb.toString().trim();
}

Результатом будет: Ram - хороший мальчик

java string