Как сделать первую букву строки заглавной в JavaScript?
Как сделать первый символ строки заглавным, если это буква, но не изменять регистр остальных символов?
Я столкнулся с проблемой, когда необходимо сделать первый символ строки заглавным, если он является буквой, при этом остальные буквы в строке должны сохранять свой регистр. Например:
"this is a test"
→"This is a test"
"the Eiffel Tower"
→"The Eiffel Tower"
"/index.html"
→"/index.html"
Как я могу реализовать это в своем коде на Python?
4 ответ(ов)
Добавлено это ОПОВИЩЕНИЕ: пожалуйста, прочитайте комментарии, чтобы понять риски редактирования базовых типов JavaScript.
Вот более объектно-ориентированный подход:
Object.defineProperty(String.prototype, 'capitalize', {
value: function() {
return this.charAt(0).toUpperCase() + this.slice(1);
},
enumerable: false
});
Вы можете вызвать функцию следующим образом:
"hello, world!".capitalize();
Ожидаемый вывод будет:
"Hello, world!"
Помните, что добавление методов к встроенным объектам, таким как String
, может вызвать конфликты и проблемные ситуации, особенно если у вас есть сторонние библиотеки или возмоно обновления в будущем.
Для вашей задачи, чтобы первая буква строки была заглавной, а остальные — строчными, можно использовать следующую функцию. Она корректно обрабатывает различные случаи:
// es5
function capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
console.log(capitalize("alfredo")); // => "Alfredo"
console.log(capitalize("Alejandro")); // => "Alejandro"
console.log(capitalize("ALBERTO")); // => "Alberto"
console.log(capitalize("ArMaNdO")); // => "Armando"
// es6 с использованием деструктуризации
const capitalize = ([first, ...rest]) => first.toUpperCase() + rest.join('').toLowerCase();
Эта функция принимает строку, берет первый символ, преобразовывает его в верхний регистр, а все оставшиеся символы в нижний и затем соединяет их. Она должна работать корректно для различных случаев.
Это решение для ECMAScript 6 и выше 2018 года:
const str = 'the Eiffel Tower';
const newStr = `${str[0].toUpperCase()}${str.slice(1)}`;
console.log('Исходная строка:', str); // the Eiffel Tower
console.log('Новая строка:', newStr); // The Eiffel Tower
В этом примере мы используем шаблонные строки для создания новой строки, где первая буква исходной строки str
преобразуется в верхний регистр с помощью toUpperCase()
, а остальные символы остаются неизменными благодаря методу slice(1)
, который извлекает часть строки, начиная с индекса 1.
Существуют очень простые способы реализации этого с помощью replace. Для ECMAScript 6:
'foo'.replace(/^./, str => str.toUpperCase())
Результат:
'Foo'
Как присвоить многострочную строку переменной?
Преобразование объекта JS в строку JSON
Преобразование объекта в строку
Как преобразовать строку, разделённую запятыми, в массив?
Как узнать, содержится ли определенная строка в массиве на JavaScript/jQuery?