2014-10-23 3 views
1

Я хочу взять входной файл String для пользователя и отформатировать его так, чтобы первая буква была заглавной, а остальная часть - нет. Я хотел бы сделать это, разделив первую букву строки и использую на ней .toUpperCase(), а остальное - .toLowerCase(), а затем объединить их вместе.Отделите первую букву от String для заглавной буквы

У меня есть идея, но не может решить все:

userInput = input.nextLine(); 
String firstLetter = ??? 
firstLetter.toUpperCase(); 
restOfString.toLowerCase(); 
String merged = firstLetter + restOfString; 

Это не похоже на работу:

  name = input.nextLine(); 
      firstLetter = name.substring(0,1); 
      remainingString = name.substring(1); 
      firstLetter.toUpperCase(); 
      remainingString.toLowerCase(); 
      name = firstLetter + remainingString; 
+1

Как я уже отмечал в своем ответе, вам нужно назначить 'firstLetter = firstLetter.toUpperCase();' String методы возвращают новую String со значениями, которые были изменены. Они не обновляют исходную строку. – Compass

+0

О, я вижу. Извините, я пропустил это! И это работает! Спасибо!! :) –

+0

Это был дубликат, когда его спросили вчера. Наверное, еще есть. –

ответ

3

Вы можете использовать подстроку.

String firstLetter = userInput.substring(0,1); //takes first letter 
String restOfString = userInput.substring(1); //takes rest of sentence 
firstLetter = firstLetter.toUpperCase(); //make sure to set the string, the methods return strings, they don't change the string itself 
restOfString = restOfString.toLowerCase(); 
String merged = firstletter + restOfString; 

Редактировать: Если вы хотите, чтобы сделать проверки ошибок на входе пользователя:

if(userInput.length < 2) { 
    throw new InputMismatchException("Sentence too short to properly capitalize!"; 
} 
+0

Две проверки ошибок. Строка нуждается в одной букве для '.substring (0, 1)' для работы, и для ее работы нужны две буквы для '.substring (1)'. В зависимости от нашего конкретного использования это может быть неважно. –

+0

@BrianJ Я добавил обработку ошибок как часть в конце моего ответа. – Compass

+0

Спасибо вам большое! –

1

Я предполагаю, что вы используете Java на основе toUpperCase(). То, что я предлагаю вам сделать, это использовать charAt(), чтобы получить первую букву, а подстроку - для остальных.

Вы можете попробовать что-то вроде этого:

String firstLetter = userInput.substring(0, 1); // Get first element. If you don't understand substring, let me know. 
string remainingString = userInput.substring(1); // Grab chars from index 1 to the end. 

firstLetter.toUpperCase(); // Capitalize string 
remainingString.toLowerCase(); // Lowercase rest of string 

String finalString = firstLetter + remainingString; 

Надеется, что это помогает.

+0

Спасибо, отлично! Я получаю 1 ошибку в «CharAt (0)», хотя .. Несовместимые типы: char не может быть преобразован в java.lang.string - Знаете почему? :) Нужно ли мне импортировать какие-либо пакеты для этого? –

+0

@CasperTL нет, я думаю, что это моя вина. Возможно, char не может быть преобразован, я настрою свой ответ на использование подстроки. – AdamMc331

+0

Спасибо за ваше время! Я получил его, чтобы работать с ответом Compass хотя (через подстроки) :) –