en.javascript.info/1-js/4-data-structures/3-string/1-ucfirst/solution.md
2015-03-10 12:36:58 +03:00

1.3 KiB
Raw Blame History

Мы не можем просто заменить первый символ, т.к. строки в JavaScript неизменяемы.

Но можно пересоздать строку на основе существующей, с заглавным первым символом:

var newStr = str[0].toUpperCase() + str.slice(1);

Однако, есть небольшая проблемка -- в случае, когда строка пуста, будет ошибка.

Ведь str[0] == undefined, а у undefined нет метода toUpperCase().

Выхода два. Первый -- использовать str.charAt(0), он всегда возвращает строку, для пустой строки -- пустую, но не undefined. Второй -- отдельно проверить на пустую строку, вот так:

//+ run
function ucFirst(str) {
  // только пустая строка в логическом контексте даст false
  if (!str) return str;

  return str[0].toUpperCase() + str.slice(1);
}

alert( ucFirst("вася") );

P.S. Возможны и более короткие решения, использующие методы для работы со строками, которые мы пройдём далее.