Как сделать заглавной первую букву строки в 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 ]

1 голос
/ 29 октября 2017
System.out.println(Character.toString(A.charAt(0)).toUpperCase()+A.substring(1));

PS = a - строка.

0 голосов
/ 22 февраля 2018

Из commons.lang.StringUtils лучший ответ:

public static String capitalize (String str) {
int strLen;
return str! = Null && (strLen = str.length)())! = 0?(Новый StringBuffer (strLen)). append (Character.toTitleCase (str.charAt (0))).найти его блестящим, так как он оборачивает строку с помощью StringBuffer.Вы можете манипулировать StringBuffer по своему усмотрению, используя тот же экземпляр.

0 голосов
/ 12 ноября 2018

Этот код для прописи каждого слова в тексте!

0 голосов
/ 26 октября 2018

Еще один пример того, как вы можете сделать первую букву пользовательского ввода заглавной:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String string = br.readLine();
// handle supplementary characters
IntStream.concat(
        IntStream.of(string.codePointAt(0))
                .map(Character::toUpperCase), string.codePoints().skip(1)
)
.forEach(cp -> System.out.print(Character.toChars(cp)));
0 голосов
/ 08 августа 2018

Один подход.

String input = "someТекст$T%$4čřЭ"; //Enter your text.
if (input == null || input.isEmpty()) {
    return "";
}

char [] chars = input.toCharArray();
chars[0] = chars[0].toUpperCase();
String res = new String(chars);
return res;

Недостаток этого метода заключается в том, что если inputString длинный, у вас будет три объекта такой длины. Так же, как вы

String s1 = input.substring(1).toUpperCase();
String s2 = input.substring(1, lenght);
String res = s1 + s2;

Или даже

//check if not null.
StringBuilder buf = new StringBuilder(input);
char ch = buf.getCharAt(0).toUpperCase();
buf.setCharAt(0, ch);
return buf.toString();
0 голосов
/ 14 апреля 2016

Ответ от Ameen Mahheen хорош, но если у нас есть строка с двойным пробелом, например, "hello world", тогда sb.append получает исключение IndexOutOfBounds. Правильнее всего сделать тест перед этой строкой, выполнив:

private String capitalizer(String word){
        String[] words = word.split(" ");
        StringBuilder sb = new StringBuilder();
        if (words[0].length() > 0) {
            sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
            for (int i = 1; i < words.length; i++) {
                sb.append(" ");
                if (words[i].length() > 0) sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
            }
        }
        return  sb.toString();
    }
0 голосов
/ 14 ноября 2016

Вы можете использовать Class WordUtils.

Предположим, что ваша строка является "текущим адресом", затем используйте

**** сильный текст Wordutils.capitaliz (String); вывод: текущий адрес

См .: http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html

0 голосов
/ 28 мая 2019

Используйте метод замены.

String newWord = word.replace(String.valueOf(word.charAt(0)), String.valueOf(word.charAt(0)).toUpperCase());
0 голосов
/ 13 декабря 2015

спасибо. Я прочитал некоторые комментарии и пришел со следующим

public static void main(String args[]) 
{
String myName = "nasser";
String newName = myName.toUpperCase().charAt(0) +  myName.substring(1);
System.out.println(newName );
}

Надеюсь, это поможет вам удачи

0 голосов
/ 18 апреля 2016

Попробуйте, у меня это сработало.

public static String capitalizeName(String name) {
    String fullName = "";
    String names[] = name.split(" ");
    for (String n: names) {
        fullName = fullName + n.substring(0, 1).toUpperCase() + n.toLowerCase().substring(1, n.length()) + " ";
    }
    return fullName;
}
...