Для того чтобы сделать первую букву в слове заглавной, напишем собственную функцию
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) - добавляет остальные символы без изменения
Пример использования:
String var = "name";
System.out.println("get" + firstUpperCase(var) + "()");//Выведет: "getName()"
а если я передам null?
Если передать null, то будет выброшено исключение NullPointerException. Нужно или до вызова функции проверять значение на null, или уже в самой функции добавить проверку на null.
Например:
public String firstUpperCase(String word){
if(word == null) return null;
return word.substring(0, 1).toUpperCase() + word.substring(1);
}
Да ладно null, а что будет если я передам пустую строку? Опять же ошибка будет.
Почему бы не добавить эти две проверки (на null и на длину строки) сразу, почему нужно ждать когда к вам случайно кто-то заглянет в блог?
Добавил проверки: на null и на пустую строку.
Всё же основная цель была показать как это сделать, а не писать готовую функцию.
Потом возникает дилемма, что возвращать в случае null? Null или пустую строку, а выбор зависит от потребности. Может ещё trim добавить?
> Потом возникает дилемма, что возвращать в случае null? Null или пустую строку, а выбор зависит от потребности.
Для этого используются другие утилитные методы: emptyToNull, nullToEmpty
> Может ещё trim добавить?
Это еще зачем?
Вы пишете пост (целый пост!) про «функцию» преобразующую первый символ в строке в верхний регистр. Эта «функция» практически ни о чём — кто не знает про String::substring и String::toUpperCase?
И в этой простой «функции» у вас заложено 2 ошибки, которые по вашим словам не нужно реализовывать тут, а «до вызова функции проверять значение на null».
Почему я вместо
String name = nullToEmpty(firstUpperCase(someExternalValue));
должен писать что-то типа:
String name;
if (someExternalValue == null || someExternalValue.isEmpty()) {
name = "";
} else {
name = firstUpperCase(someExternalValue);
}
А хотите хохму? )
Что будет, если я передам слово, в котором все буквы заглавные?
Все буквы останутся заглавными))
Спасибо автору очень помогло) и да некоторые может с этим и незнакомы)
Огромное спасибо автору за сэкономленное время!
Здравствуйте.А как мне сделать каждое слово в строке с большой буквы?Ввод с консоли BufferedReader
Вот пример перевода первой буквы каждого слова в верхний регистр.
p.s. Здесь реализация через регулярные выражения. \b — означает начальную границу слова.
я взял за основу код из шапки и попробовал решить через рекурсию, правда java вижу второй раз в жизни и мог где-то допустить ошибки (но код работает)
public String firstUpperCase(String word){
if (word.indexOf(» «)==-1){
if(word == null || word.isEmpty()) return «»;
return word.substring(0, 1).toUpperCase() + word.substring(1);
} else {
String aTmp[] = word.split(» «);
String result = new String();
for (int i=0;i<aTmp.length;i++){
result += firstUpperCase(aTmp[i]);
}
return result;
}
}
А как быть если я введу несколько слов через запятую например word = «string string»
Хочется что-бы это отрабатывало для каждого слова, а отработает только для первого
см. комментарий выше. для вашего случая тоже подойдет