Как использовать первую букву слова в строке, используя Java?
Пример строки
one thousand only
two hundred
twenty
seven
Как изменить первый символ строки заглавной буквой, а не изменить регистр других букв?
После изменения должно быть:
One thousand only
Two hundred
Twenty
Seven
Примечание: я не хочу использовать apache.commons.lang.WordUtils для этого.
Ответы
Ответ 1
Если вы хотите использовать только первую букву строки с именем input
и оставить ее в покое:
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
Теперь output
будет иметь то, что вы хотите. Убедитесь, что ваш input
имеет хотя бы один символ задолго до его использования, иначе вы получите исключение.
Ответ 2
public String capitalizeFirstLetter(String original) {
if (original == null || original.length() == 0) {
return original;
}
return original.substring(0, 1).toUpperCase() + original.substring(1);
}
Просто... полное решение, я вижу, что это только что закончилось тем, что все остальные закончили публикацию = P.
Ответ 3
Самый простой способ - использовать org.apache.commons.lang.StringUtils
class
StringUtils.capitalize(Str);
Ответ 4
Кроме того, существует org.springframework.util.StringUtils
в Spring Framework:
StringUtils.capitalize(str);
Ответ 5
StringUtils.capitalize(str)
от Apache Commons-Lang.
Ответ 6
String sentence = "ToDAY WeAthEr GREat";
public static String upperCaseWords(String sentence) {
String words[] = sentence.replaceAll("\\s+", " ").trim().split(" ");
String newSentence = "";
for (String word : words) {
for (int i = 0; i < word.length(); i++)
newSentence = newSentence + ((i == 0) ? word.substring(i, i + 1).toUpperCase():
(i != word.length() - 1) ? word.substring(i, i + 1).toLowerCase() : word.substring(i, i + 1).toLowerCase().toLowerCase() + " ");
}
return newSentence;
}
//Today Weather Great
Ответ 7
String s=t.getText().trim();
int l=s.length();
char c=Character.toUpperCase(s.charAt(0));
s=c+s.substring(1);
for(int i=1; i<l; i++)
{
if(s.charAt(i)==' ')
{
c=Character.toUpperCase(s.charAt(i+1));
s=s.substring(0, i) + c + s.substring(i+2);
}
}
t.setText(s);
Ответ 8
Здесь вы идете (надеюсь, это даст вам идею):
/*************************************************************************
* Compilation: javac Capitalize.java
* Execution: java Capitalize < input.txt
*
* Read in a sequence of words from standard input and capitalize each
* one (make first letter uppercase; make rest lowercase).
*
* % java Capitalize
* now is the time for all good
* Now Is The Time For All Good
* to be or not to be that is the question
* To Be Or Not To Be That Is The Question
*
* Remark: replace sequence of whitespace with a single space.
*
*************************************************************************/
public class Capitalize {
public static String capitalize(String s) {
if (s.length() == 0) return s;
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
public static void main(String[] args) {
while (!StdIn.isEmpty()) {
String line = StdIn.readLine();
String[] words = line.split("\\s");
for (String s : words) {
StdOut.print(capitalize(s) + " ");
}
StdOut.println();
}
}
}
Ответ 9
Для этого нужен простой простой код.
если String A = scanner.nextLine();
то вам нужно написать это, чтобы отобразить строку с этой заглавной буквой.
System.out.println(A.substring(0, 1).toUpperCase() + A.substring(1));
И теперь это сделано.
Ответ 10
Пример использования класса StringTokenizer:
String st = " hello all students";
String st1;
char f;
String fs="";
StringTokenizer a= new StringTokenizer(st);
while(a.hasMoreTokens()){
st1=a.nextToken();
f=Character.toUpperCase(st1.charAt(0));
fs+=f+ st1.substring(1);
System.out.println(fs);
}
Ответ 11
Суммируя все вместе, неплохо обрезать лишние пробелы в начале строки. В противном случае.substring(0,1).toUpperCase попытается использовать пробел в верхнем регистре.
public String capitalizeFirstLetter(String original) {
if (original == null || original.length() == 0) {
return original;
}
return original.trim().substring(0, 1).toUpperCase() + original.substring(1);
}
Ответ 12
Использовать этот:
char[] chars = {Character.toUpperCase(A.charAt(0)),
Character.toUpperCase(B.charAt(0))};
String a1 = chars[0] + A.substring(1);
String b1 = chars[1] + B.substring(1);
Ответ 13
Решение с помощью StringBuilder:
value = new StringBuilder()
.append(value.substring(0, 1).toUpperCase())
.append(value.substring(1))
.toString();
.. на основе предыдущих ответов
Ответ 14
Мой функциональный подход. его первый символ в предложении после белого пробела в абзаце.
Для ввода только первого символа слова просто удалите .split("")
b.name.split(" ")
.filter { !it.isEmpty() }
.map { it.substring(0, 1).toUpperCase()
+it.substring(1).toLowerCase() }
.joinToString(" ")
Ответ 15
Учитывая input
строку:
Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase()
Ответ 16
Вы можете попробовать следующий код:
public string capitalize(str) {
String[] array = str.split(" ");
String newStr;
for(int i = 0; i < array.length; i++) {
newStr += array[i].substring(0,1).toUpperCase() + array[i].substring(1) + " ";
}
return newStr.trim();
}
Ответ 17
public static String capitalize(String str){
String[] inputWords = str.split(" ");
String outputWords = "";
for (String word : inputWords){
if (!word.isEmpty()){
outputWords = outputWords + " "+StringUtils.capitalize(word);
}
}
return outputWords;
}
Ответ 18
Я хотел бы добавить проверку NULL и IndexOutOfBoundsException на принятый ответ.
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
Java-код:
class Main {
public static void main(String[] args) {
System.out.println("Capitalize first letter ");
System.out.println("Normal check #1 : ["+ captializeFirstLetter("one thousand only")+"]");
System.out.println("Normal check #2 : ["+ captializeFirstLetter("two hundred")+"]");
System.out.println("Normal check #3 : ["+ captializeFirstLetter("twenty")+"]");
System.out.println("Normal check #4 : ["+ captializeFirstLetter("seven")+"]");
System.out.println("Single letter check : ["+captializeFirstLetter("a")+"]");
System.out.println("IndexOutOfBound check : ["+ captializeFirstLetter("")+"]");
System.out.println("Null Check : ["+ captializeFirstLetter(null)+"]");
}
static String captializeFirstLetter(String input){
if(input!=null && input.length() >0){
input = input.substring(0, 1).toUpperCase() + input.substring(1);
}
return input;
}
}
Выход:
Normal check #1 : [One thousand only]
Normal check #2 : [Two hundred]
Normal check #3 : [Twenty]
Normal check #4 : [Seven]
Single letter check : [A]
IndexOutOfBound check : []
Null Check : [null]
Ответ 19
Обновление июль 2019
В настоящее время самая современная библиотечная функция для этого содержится в org.apache.commons.lang3.StringUtils
import org.apache.commons.lang3.StringUtils;
StringUtils.capitalize(myString);
Если вы используете Maven, импортируйте зависимость в ваш pom.xml:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
Ответ 20
Следующее даст вам один и тот же согласованный вывод независимо от значения вашего inputString:
if(StringUtils.isNotBlank(inputString)) {
inputString = StringUtils.capitalize(inputString.toLowerCase());
}
Ответ 21
Simplest way to do is:
class Test {
public static void main(String[] args) {
String newString="";
String test="Hii lets cheCk for BEING String";
String[] splitString = test.split(" ");
for(int i=0; i<splitString.length; i++){
newString= newString+ splitString[i].substring(0,1).toUpperCase()
+ splitString[i].substring(1,splitString[i].length()).toLowerCase()+" ";
}
System.out.println("the new String is "+newString);
}
}
Ответ 22
Вы можете просто использовать встроенную функцию в пакете java.util:
>> import java.util.*;
>> System.out.println(capitalize(input));
Убедитесь, что строки не написаны заглавными буквами заранее.