Как сделать первую букву заглавной
Короткий ответ
Возьмите первый символ, переведите в верхний регистр и приклейте остаток строки:
void main() {
String name = "anna";
String result = name.substring(0, 1).toUpperCase() + name.substring(1);
IO.println(result);
}Результат:
AnnaБезопасный метод
Для пустой строки substring(0, 1) выбросит исключение, поэтому проверьте длину:
String capitalize(String text) {
if (text == null || text.isEmpty()) {
return text;
}
return Character.toUpperCase(text.charAt(0)) + text.substring(1);
}
void main() {
IO.println(capitalize("java"));
IO.println("[" + capitalize("") + "]");
}Результат:
Java
[]Остальные буквы — маленькие
Если строка пришла в верхнем регистре, сначала приведите её к нижнему:
void main() {
String city = "BERLIN";
String lower = city.toLowerCase();
IO.println(lower.substring(0, 1).toUpperCase() + lower.substring(1));
}Результат:
BerlinКаждое слово
Разбейте строку на слова, обработайте каждое и соберите обратно:
void main() {
String title = "the old man and the sea";
String result = Arrays.stream(title.split(" "))
.map(word -> word.substring(0, 1).toUpperCase() + word.substring(1))
.collect(Collectors.joining(" "));
IO.println(result);
}Результат:
The Old Man And The SeaЧастая ошибка
Вызвать substring(0, 1) у пустой строки:
void main() {
String name = "";
IO.println(name.substring(0, 1).toUpperCase());
}Результат:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0Проверяйте isEmpty() перед тем, как брать первый символ.
Функции из этого ответа
- String.substring() — Возвращает часть строки между двумя индексами.
- String.toUpperCase() — Возвращает копию строки, где все буквы заглавные.
- String.charAt() — Возвращает символ строки по индексу.