Первый char в верхний регистр
Возможный дубликат:
Как в верхнем регистре каждая первая буква слова в строке?
Самый эффективный способ сделать первый символ строкового строчного строчка?
Я хочу преобразовать первую букву строки в верхний регистр. Я пытаюсь использовать replaceFirst(), как описано в JavaDocs, но я понятия не имею, что подразумевается под регулярным выражением.
Вот код, который я пробовал до сих пор:
public static String cap1stChar(String userIdea)
{
String betterIdea, userIdeaUC;
char char1;
userIdeaUC = userIdea.toUpperCase();
char1 = userIdeaUC.charAt(0);
betterIdea = userIdea.replaceFirst(char1);
return betterIdea;
}//end cap1stChar
Ошибка компилятора заключается в том, что списки аргументов различаются по длине. Я предполагаю, что это потому, что регулярное выражение отсутствует, но я не знаю, что это точно.
Ответы
Ответ 1
Регулярные выражения (сокращенно "regex" или "reg-ex" ) - это строка, которая определяет шаблон поиска.
Что делает replaceFirst()
, он использует регулярное выражение, представленное в параметрах, и заменяет первый результат поиска тем, что вы передаете в качестве другого параметра.
Что вы хотите сделать, это преобразовать строку в массив с помощью метода String
class <charAt()
, а затем использовать Character.toUpperCase()
, чтобы изменить символ на верхний регистр (очевидно). Ваш код будет выглядеть так:
char first = Character.toUpperCase(userIdea.charAt(0));
betterIdea = first + userIdea.substring(1);
Или, если вам комфортно с более сложным, однострочным java-кодом:
betterIdea = Character.toUpperCase(userIdea.charAt(0)) + userIdea.substring(1);
Оба они делают то же самое, что преобразует первый символ userIdea
в символ верхнего регистра.
Ответ 2
Или вы можете сделать
s = Character.toUpperCase(s.charAt(0)) + s.substring(1);
Ответ 3
public static String cap1stChar(String userIdea)
{
char[] stringArray = userIdea.toCharArray();
stringArray[0] = Character.toUpperCase(stringArray[0]);
return userIdea = new String(stringArray);
}
Ответ 4
Ошибка компиляции не соответствует должным образом, replaceFirst принимает regx как начальный arg. [a-z] {1} будет соответствовать строке простых альфа-символов длины 1.
Попробуйте это.
betterIdea = userIdea.replaceFirst("[a-z]{1}", userIdea.substring(0,1).toUpperCase())
Ответ 5
String toCamelCase(String string) {
StringBuffer sb = new StringBuffer(string);
sb.replace(0, 1, string.substring(0, 1).toUpperCase());
return sb.toString();
}
Ответ 6
userIdeaUC = userIdea.substring(0, 1).toUpperCase() + userIdea.length() > 1 ? userIdea.substring(1) : "";
или
userIdeaUC = userIdea.substring(0, 1).toUpperCase();
if(userIdea.length() > 1)
userIdeaUC += userIdea.substring(1);
Ответ 7
Для полноты, если вы хотите использовать replaceFirst, попробуйте следующее:
public static String cap1stChar(String userIdea)
{
String betterIdea = userIdea;
if (userIdea.length() > 0)
{
String first = userIdea.substring(0,1);
betterIdea = userIdea.replaceFirst(first, first.toUpperCase());
}
return betterIdea;
}//end cap1stChar