53

Как сделать первую букву строки заглавной в JavaScript?

18

Как сделать первый символ строки заглавным, если это буква, но не изменять регистр остальных символов?

Я столкнулся с проблемой, когда необходимо сделать первый символ строки заглавным, если он является буквой, при этом остальные буквы в строке должны сохранять свой регистр. Например:

  • "this is a test""This is a test"
  • "the Eiffel Tower""The Eiffel Tower"
  • "/index.html""/index.html"

Как я могу реализовать это в своем коде на Python?

4 ответ(ов)

16

Добавлено это ОПОВИЩЕНИЕ: пожалуйста, прочитайте комментарии, чтобы понять риски редактирования базовых типов JavaScript.


Вот более объектно-ориентированный подход:

Object.defineProperty(String.prototype, 'capitalize', {
  value: function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
  },
  enumerable: false
});

Вы можете вызвать функцию следующим образом:

"hello, world!".capitalize();

Ожидаемый вывод будет:

"Hello, world!"

Помните, что добавление методов к встроенным объектам, таким как String, может вызвать конфликты и проблемные ситуации, особенно если у вас есть сторонние библиотеки или возмоно обновления в будущем.

1

Для вашей задачи, чтобы первая буква строки была заглавной, а остальные — строчными, можно использовать следующую функцию. Она корректно обрабатывает различные случаи:

// 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();

Эта функция принимает строку, берет первый символ, преобразовывает его в верхний регистр, а все оставшиеся символы в нижний и затем соединяет их. Она должна работать корректно для различных случаев.

0

Это решение для 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.

0

Существуют очень простые способы реализации этого с помощью replace. Для ECMAScript 6:

'foo'.replace(/^./, str => str.toUpperCase())

Результат:

'Foo'
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь