Как сделать заглавной первую букву строки в Java? - PullRequest
228 голосов
/ 11 октября 2010

Я использую Java для получения String ввода от пользователя. Я пытаюсь сделать первую букву этого ввода заглавной.

Я пробовал это:

String name;

BufferedReader br = new InputStreamReader(System.in);

String s1 = name.charAt(0).toUppercase());

System.out.println(s1 + name.substring(1));

, что привело к этим ошибкам компилятора:

  • Несоответствие типов: невозможно преобразовать из InputStreamReader в BufferedReader

  • Невозможно вызвать toUppercase () для примитивного типа char

Ответы [ 47 ]

320 голосов
/ 11 октября 2010
String str = "java";
String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
// cap = "Java"

С вашим примером:

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    // Actually use the Reader
    String name = br.readLine();
    // Don't mistake String object with a Character object
    String s1 = name.substring(0, 1).toUpperCase();
    String nameCapitalized = s1 + name.substring(1);
    System.out.println(nameCapitalized);
}
178 голосов
/ 11 октября 2010
68 голосов
/ 06 ноября 2014

Более короткий / более быстрый код версии, в котором первая буква строки начинается с заглавной буквы:

String name  = "stackoverflow"; 
name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();

значение name равно "Stackoverflow"

39 голосов
/ 10 ноября 2017

Использовать общую библиотеку Apache.Освободите свой мозг от этих вещей и избегайте исключений Null Pointer и Index Out Bound исключений

Шаг 1:

Импортируйте общую библиотеку языка Apache, поместив ее в зависимости build.gradle

compile 'org.apache.commons:commons-lang3:3.6'

Шаг 2:

Если вы уверены, что ваша строка состоит из строчных букв, или все, что вам нужно, это инициализировать первую букву, просто позвоните

StringUtils.capitalize(yourString);

Если вы хотите убедиться, что заглавной буквой является только первая буква, как, например, для enum, сначала наберите toLowerCase() и имейте в виду, что он наберет NullPointerException, если введенострока равна нулю.

StringUtils.capitalize(YourEnum.STUFF.name().toLowerCase());
StringUtils.capitalize(yourString.toLowerCase());

Вот еще примеры, предоставленные apache.это исключение бесплатно

StringUtils.capitalize(null)  = null
StringUtils.capitalize("")    = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"

Примечание:

WordUtils также включено в эту библиотеку, но не рекомендуется.Пожалуйста не используйте это.

21 голосов
/ 11 октября 2010

Что вы хотите сделать, это, вероятно, это:

s1 = name.substring(0, 1).toUpperCase() + name.substring(1);

(преобразует первый символ в верхний регистр и добавляет остаток исходной строки)

Кроме того, вы создаете устройство чтения входного потока, но никогда не читаете ни одной строки. Таким образом, name всегда будет null.

Это должно работать:

BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
14 голосов
/ 11 октября 2010
11 голосов
/ 14 февраля 2018

Ниже будет работать решение.

String A = "stackOverflow";
String ACaps = A.toUpperCase().charAt(0)+A.substring(1,A.length());
//Will print StackOverflow

Вы не можете использовать toUpperCase () для примитивного символа, но вы можете сначала сделать всю строку в верхний регистр, затем взять первый символ, а затем добавить к подстрокекак показано выше.

10 голосов
/ 23 января 2019

Для пользователей Java:

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

public static String capitalize(String str)
{
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

После этого просто позвоните str = capitalize(str)

Для пользователей Kotlin просто позвоните:

str.capitalize()
8 голосов
/ 11 октября 2010

Использование WordUtils.capitalize(str).

6 голосов
/ 03 июня 2016

Установите строку в нижний регистр, затем установите первую букву в верхнюю, как это:

    userName = userName.toLowerCase();

, а затем используйте заглавную букву:

    userName = userName.substring(0, 1).toUpperCase() + userName.substring(1).toLowerCase();

подстрока просто получаеткусок более крупной нити, тогда мы объединяем их вместе.

...