Как сделать заглавной первую букву в строке?
Такой вариант не работает:
let name = 'john';
name[0] = name[0].toUpperCase();
console.log(name[0]);
console.log(name[0].toUpperCase());
Подскажите пожалуйста вторая строка кода разве не должна изменить и переписать регистр первого знака в строке?
Ответы (5 шт):
Поэтапно:
const name = "john"
// делим слово на отдельные буквы
const splitted = name.split("")
// делаем первую букву в массиве заглавной
const first = splitted[0].toUpperCase()
// копируем массив что бы
// не модицицировать splitted напрямую
// если вдрг он нам понадобиться далее
const rest = [...splitted]
// удаляем первую букву из массива
rest.splice(0, 1)
// соединияем все обратно в строку
const result = [first, ...rest].join("")
console.log(result)
// John
За раз:
const name = "john"
const result = name.charAt(0).toUpperCase() + name.slice(1)
console.log(result)
// John
Так же можно добавить функцию для перевода первого символа в верхний регистр глобально для типа String
String.prototype.firstLetterToUppercase = function() {
return this[0].toUpperCase() + this.slice(1);
}
const name = 'john';
console.log(
name.firstLetterToUppercase()
);
Еще один вариант. Принципиальное отличие в том, что меняем именно первую букву, а не любой первый символ в строке. Ведь первым символом может быть и пробел, и дефис, если это диалог, и открывающиеся кавычки при цитировании и т.д.
let str = ' - hi there!';
str = str.replace(/^[^a-zа-яё]*([a-zа-яё])/i, function(m){
return m.toUpperCase();
});
console.log(str);
let name = 'john';
name = name.replace(name[0], name[0].toUpperCase()); /// 'John'
Короткий вариант:
заменяем в строке первую букву name[0], на неё же заглавную name[0].toUpperCase().
Если строка начинается не обязательно буквой (пробел, намбер) то можно и нужно применить regexp, как в одном из уже предложенных вариантов.