- Как использовать первую букву строки в Java?
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Коротко/более быстрый код версии для заглавной буквы первой строки строки:
- Ответ 4
- Используйте общую библиотеку Apache. Освободите свой мозг от этих материалов и избегайте Null Pointer & Index Out of Bound Exceptions
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
- Ответ 17
- Ответ 18
- Ответ 19
- Ответ 20
- Ответ 21
- Ответ 22
- Ответ 23
- Ответ 24
- Ответ 25
- Ответ 26
- Ответ 27
- Ответ 28
- Ответ 29
- Ответ 30
- Как сделать первую букву заглавной java
- Шпаргалки Java: как сделать заглавной первую букву в слове
- Преобразование первого символа в верхний регистр в предложении в Java
- Пример
- Итог
Как использовать первую букву строки в Java?
Я использую Java, чтобы получить вход String от пользователя. Я пытаюсь сделать первую букву этого ввода капитализированной.
String name; BufferedReader br = new InputStreamReader(System.in); String s1 = name.charAt(0).toUppercase()); System.out.println(s1 + name.substring(1));
что привело к ошибкам компилятора:
ОТВЕТЫ
Ответ 1
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); >
Ответ 2
Ответ 3
Коротко/более быстрый код версии для заглавной буквы первой строки строки:
String name = "stackoverflow"; name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
значение name равно «Stackoverflow»
Ответ 4
Используйте общую библиотеку Apache. Освободите свой мозг от этих материалов и избегайте Null Pointer & Index Out of Bound Exceptions
Импортируйте библиотеку apache common lang, помещая это в зависимости build.gradle
compile 'org.apache.commons:commons-lang3:3.6'
Если вы уверены, что ваша строка имеет строчный регистр, или все, что вам нужно, это инициализировать первую букву,
StringUtils.capitalize(yourString);
Если вы хотите убедиться, что только первая буква toLowerCase() , например, сделать это для enum , toLowerCase() вызовите 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 также включен в эту библиотеку, но устарел. Пожалуйста , не используйте это.
Ответ 5
Что вы хотите сделать, вероятно, это:
s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
(преобразует сначала char в верхний регистр и добавляет оставшуюся часть исходной строки)
Кроме того, вы создаете считыватель потока ввода, но никогда не читаете ни одной строки. Таким образом, name всегда будет null .
BufferedReader br = new InputstreamReader(System.in); String name = br.readLine(); String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
Ответ 6
Ответ 7
Ниже будет работать решение.
String A = "stackOverflow"; String ACaps = A.toUpperCase().charAt(0)+A.substring(1,A.length()); //Will print StackOverflow
Вы не можете использовать toUpperCase() для примитивного символа, но сначала можете сделать всю строку в верхнем регистре, а затем взять первый символ, а затем добавить к подстроке, как показано выше.
Ответ 8
просто вспомогательный метод для заглавных букв каждой строки.
public static String capitalize(String str)
После этого просто позвоните str = capitalize(str)
Для пользователей Kotlin просто позвоните:
Ответ 9
Ответ 10
Установите строку в нижний регистр, затем установите первую букву в верхнюю часть следующим образом:
userName = userName.toLowerCase();
чтобы заглавная буква первой буквы:
userName = userName.substring(0, 1).toUpperCase() + userName.substring(1).toLowerCase();
просто получает часть большей строки, затем мы объединяем их вместе.
Ответ 11
import org.apache.commons.lang3.text.WordUtils; public class Main < public static void main(String[] args) < final String str1 = "HELLO WORLD"; System.out.println(capitalizeFirstLetter(str1)); // output: Hello World final String str2 = "Hello WORLD"; System.out.println(capitalizeFirstLetter(str2)); // output: Hello World final String str3 = "hello world"; System.out.println(capitalizeFirstLetter(str3)); // output: Hello World final String str4 = "heLLo wORld"; System.out.println(capitalizeFirstLetter(str4)); // output: Hello World >private static String capitalizeFirstLetter(String str) < return WordUtils.capitalizeFully(str); >>
Ответ 12
String message = "my message"; message = Character.toUpperCase(message.charAt(0)) + message.substring(1); System.out.println(message) // Will output: My message
Ответ 13
String str1 = "hello"; str1.substring(0, 1).toUpperCase()+str1.substring(1);
Ответ 14
Вы также можете попробовать следующее:
String s1 = br.readLine(); char[] chars = s1.toCharArray(); chars[0] = Character.toUpperCase(chars[0]); s1= new String(chars); System.out.println(s1);
Это лучше (оптимизировано), чем при использовании подстроки. (но не беспокоиться о маленькой строке)
Ответ 15
Вы можете использовать substring() для этого.
Но есть два разных случая:
Если значение String , которое вы используете, предназначено для чтения человеком, вы также должны указать локаль по умолчанию:
String firstLetterCapitalized = myString.substring(0, 1).toUpperCase(Locale.getDefault()) + myString.substring(1);
Если вы капитализируете String , вы должны быть машиночитаемыми, не используйте Locale.getDefault() , потому что возвращаемая строка будет непоследовательна в разных регионах и в этом случае всегда укажет одну и ту же локаль (например, toUpperCase(Locale.ENGLISH) ). Это гарантирует, что строки, которые вы используете для внутренней обработки, согласованы, что поможет вам избежать труднодоступных ошибок.
Примечание. Вам не нужно указывать Locale.getDefault() для toLowerCase() , поскольку это делается автоматически.
Ответ 16
В Android Studio
Добавьте эту зависимость в свой build.gradle (Module: app)
Теперь вы можете использовать
String string = "STRING WITH ALL CAPPS AND SPACES"; string = string.toLowerCase(); // Make all lowercase if you have caps someTextView.setText(WordUtils.capitalize(string));
Ответ 17
Use this utility method to get all first letter in capital. String captializeAllFirstLetter(String name) < char[] array = name.toCharArray(); array[0] = Character.toUpperCase(array[0]); for (int i = 1; i < array.length; i++) < if (Character.isWhitespace(array[i - 1])) < array[i] = Character.toUpperCase(array[i]); >> return new String(array); >
Ответ 18
Это просто для того, чтобы показать вам, что вы не ошибаетесь.
BufferedReader br = new InputstreamReader(System.in); // Assuming name is not blank String name = br.readLine(); //No more error telling that you cant convert char to string String s1 = (""+name.charAt(0)).toUppercase()); // Or, as Carlos prefers. See the comments to this post. String s1 = Character.toString(name.charAt(0)).toUppercase()); System.out.println(s1+name.substring(1));
Примечание. Это не лучший способ сделать это. Это просто, чтобы показать OP, что это можно сделать, используя charAt() .;)
Ответ 19
Что этот метод делает, так это то, что, рассмотрим слово «мир привет», этот метод превратит его в «Hello World», заглавную в начале каждого слова.
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(" "); sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase()); >> return sb.toString(); >
Ответ 20
char[] array = value.toCharArray(); array[0] = Character.toUpperCase(array[0]); String result = new String(array);
Ответ 21
Вы можете использовать следующий код:
public static void main(String[] args) < capitalizeFirstLetter("java"); capitalizeFirstLetter("java developer"); >public static void capitalizeFirstLetter(String text) < StringBuilder str = new StringBuilder(); String[] tokens = text.split("\\s");// Can be space,comma or hyphen for (String token : tokens) < str.append(Character.toUpperCase(token.charAt(0))).append(token.substring(1)).append(" "); >str.toString().trim(); // Trim trailing space System.out.println(str); >
Ответ 22
Ответы даны только для заглавных букв только в одном слове. используйте следующий код, чтобы использовать заглавную строку
public static void main(String[] args) < String str = "this is a random string"; StringBuilder capitalizedString = new StringBuilder(); String[] splited = str.trim().split("\\s+"); for (String string : splited) < String s1 = string.substring(0, 1).toUpperCase(); String nameCapitalized = s1 + string.substring(1); capitalizedString.append(nameCapitalized); capitalizedString.append(" "); >System.out.println(capitalizedString.toString().trim()); >
вывод: This Is A Random String
Ответ 23
Если для входного параметра задан UpperCase, используйте следующее:
str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase();
Если для Input задано значение LowerCase, используйте следующее:
str.substring(0, 1).toUpperCase() + str.substring(1);
Ответ 24
Посмотрите на ACL WordUtils.
WordUtils.capitalize( «ваша строка» ) == «Ваша строка»
Ответ 25
public static String capitalizer(final String texto) < // split words String[] palavras = texto.split(" "); StringBuilder sb = new StringBuilder(); // list of word exceptions Listexcessoes = new ArrayList(Arrays.asList("de", "da", "das", "do", "dos", "na", "nas", "no", "nos", "a", "e", "o", "em", "com")); for (String palavra : palavras) < if (excessoes.contains(palavra.toLowerCase())) sb.append(palavra.toLowerCase()).append(" "); else sb.append(Character.toUpperCase(palavra.charAt(0))).append(palavra.substring(1).toLowerCase()).append(" "); >return sb.toString().trim(); >
Ответ 26
Вы можете использовать следующий код:
public static String capitalizeString(String string) < if (string == null || string.trim().isEmpty()) < return string; >char c[] = string.trim().toLowerCase().toCharArray(); c[0] = Character.toUpperCase(c[0]); return new String(c); >
@Test public void capitalizeStringUpperCaseTest() < String string = "HELLO WORLD "; string = capitalizeString(string); assertThat(string, is("Hello world")); >@Test public void capitalizeStringLowerCaseTest()
Ответ 27
Еще один пример, как вы можете сделать первую букву пользовательского ввода с заглавной буквы:
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)));
Ответ 28
- неверно: они думают, что char — это отдельный символ (кодовая точка), в то время как это слово UTF-16, которое может быть половиной суррогатной пары или
- использовать библиотеки, которые сами по себе неплохие, но требуют добавления зависимостей в ваш проект, или
- использовать потоки Java 8, что совершенно правильно, но не всегда возможно.
Давайте посмотрим на суррогатные символы (каждый такой символ состоит из двух слов UTF-16 — Java char ) и может иметь прописные и строчные буквы:
IntStream.rangeClosed(0x01_0000, 0x10_FFFF) .filter(ch -> Character.toUpperCase(ch) != Character.toLowerCase(ch)) .forEach(ch -> System.out.print(new String(new int[] < ch >, 0, 1)));
Многие из них могут выглядеть для вас как «тофу» (□), но в основном они являются действительными символами редких сценариев, и некоторые шрифты поддерживают их.
Например, давайте посмотрим на маленькую букву Дезерет Long я (𐐨), U + 10428, «\uD801\uDC28» :
System.out.println("U+" + Integer.toHexString( "\uD801\uDC28".codePointAt(0) )); // U+10428 System.out.println("U+" + Integer.toHexString( Character.toTitleCase("\uD801\uDC28".codePointAt(0)) )); // U+10400 — ok! capitalized character is another code point System.out.println("U+" + Integer.toHexString(new String(new char[] < Character.toTitleCase("\uD801\uDC28".charAt(0)), "\uD801\uDC28".charAt(1) >).codePointAt(0))); // U+10428 — oops! — cannot capitalize an unpaired surrogate
Таким образом, кодовая точка может начинаться с заглавной буквы даже в тех случаях, когда char не может быть. Учитывая это, давайте напишем правильный (и совместимый с Java 1.5!) Капитализатор:
@Contract("null -> null") public static CharSequence capitalize(CharSequence input)
И проверьте, работает ли он:
public static void main(String[] args) < // ASCII System.out.println(capitalize("whatever")); // w ->W // UTF-16, no surrogate System.out.println(capitalize("что-то")); // ч -> Ч // UTF-16 with surrogate pairs System.out.println(capitalize("\uD801\uDC28")); // 𐐨 -> 𐐀 >
Ответ 29
Многие из ответов очень полезны, поэтому я использовал их для создания метода, чтобы превратить любую строку в заголовок (первый символ заглавный):
static String toTitle (String s)
Ответ 30
Просто переработал код Jorgesys и добавил несколько проверок из-за нескольких случаев, связанных с длиной строки. Не делайте для нулевой проверки ссылок в моем случае.
public static String capitalizeFirstLetter(@NonNull String customText) < int count = customText.length(); if (count == 0) < return customText; >if (count == 1) < return customText.toUpperCase(); >return customText.substring(0, 1).toUpperCase() + customText.substring(1).toLowerCase(); >
Как сделать первую букву заглавной java
Т.к. строки в Java неизменяемы, то нам придется создать новую строку. Перевести нужные символы в заглавные можно с помощью метода toUpperCase() :
public class App public static void main(String[] args) String word = "hello"; String newWord = word.substring(0, 1).toUpperCase() + word.substring(1); System.out.println(word); // => hello System.out.println(newWord); // => Hello > >
Шпаргалки Java: как сделать заглавной первую букву в слове
Для того, чтобы сделать заглавной первую букву в слове, напишем собственную функцию firstUpperCase. Метод firstUpperCase будет принимать слово, а возвращать тоже слово, но с первой заглавной буквой.
public String firstUpperCase(String word) if(word == null || word.isEmpty()) return ""; //или return word; return word.substring(0, 1).toUpperCase() + word.substring(1); >
word.substring(0, 1) — возвращает первую букву в слове
word.substring(0, 1).toUpperCase() — переводит первую букву в верхний регистр
word.substring(1) — добавляет остальные символы без изменения
Преобразование первого символа в верхний регистр в предложении в Java
Чтобы преобразовать первый символ в верхний регистр в предложении в Java, мы должны сначала отделить каждое слово в предложении, а затем сделать первый символ каждого слова в верхнем регистре. После этого мы должны снова соединить каждое слово, разделенное пробелом, чтобы снова сделать предложение.
Теперь давайте возьмем каждую задачу одну за другой. Во-первых, чтобы получить каждое слово предложения отдельно, мы бы использовали класс Java Scanner и реализовали его метод hasnext, чтобы проверить, есть ли в нашем предложении больше слова или нет. Если слово присутствует тогда мы получили бы это слово, используя следующий метод того же класса.
После получения каждого слова в предложении мы теперь преобразуем первый символ каждого слова в верхний регистр, используя метод toUpperCase класса Character. Соединяем другие символы слова, используя метод подстроки строкового класса, а также добавляем пробел в конце каждого слова. чтобы сделать их снова в предложении.
Пример
import java.util.Scanner; public class UpperCaseOfSentence < public static void main(String[] args) < String upper_case_line = ""; String str = "ram is a good boy."; Scanner lineScan = new Scanner(str); while(lineScan.hasNext()) < String word = lineScan.next(); upper_case_line += Character.toUpperCase(word.charAt(0)) + word.substring(1) + " "; >System.out.println(upper_case_line); > >
Итог
Средняя оценка 5 / 5. Количество голосов: 7
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Видим, что вы не нашли ответ на свой вопрос.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.