Я ищу способ преобразовать первый символ строки в заглавную букву, но только если этот символ - буква. Остальные части строки должны оставаться неизменными.
Примеры результата:
"привет мир" → "Привет мир"
"да здравствует Зима" → "Да здравствует Зима"
"/index.html" → "/index.html"
function capitalizeFirst(text) {
// Как лучше всего реализовать эту функцию?
return text;
}
let message = "поздравляю всех";
console.log(capitalizeFirst(message)); // должно выводить "Поздравляю всех"
Пробовал разные подходы, но результата не достиг. Какой самый эффективный способ решить эту задачу?
А я через регулярки делаю - text.replace(/^[а-яё]/i, match => match.toUpperCase()) для русских или /^[a-z]/i для английских. Удобно - сразу проверяет, что первый символ буква, и только тогда меняет. Главное учесть язык, а то может глючить.
Я делаю это через charAt и slice - просто и работает. В твоей функции пиши return text.charAt(0).toUpperCase() + text.slice(1). charAt(0) хватает первый символ, toUpperCase делает заглавным, slice(1) добавляет остальное со второго символа. Если первый символ не буква, toUpperCase его не тронет, так что с “/index.html” всё нормально отработает.
Лучше всего через charAt и isNaN. Проверяешь isNaN(text.charAt(0)) - если true, то это буква, делаешь toUpperCase(). На цифрах не сломается. Или просто text[0].toUpperCase() + text.substring(1) - тоже работает, только substring вместо slice.