Как сделать первую букву строки заглавной в JavaScript? - PullRequest
3412 голосов
/ 22 июня 2009

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

Например:

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

Ответы [ 83 ]

30 голосов
/ 22 июня 2009

Вот функция с именем ucfirst () (сокращение от «первая буква верхнего регистра»):

function ucfirst(str) {
    var firstLetter = str.substr(0, 1);
    return firstLetter.toUpperCase() + str.substr(1);
}

Вы можете использовать строку с заглавной буквы, вызывая ucfirst ("некоторая строка") - например,

ucfirst("this is a test") --> "This is a test"

Он работает, разбивая строку на две части. В первой строке он извлекает firstLetter , а затем во второй строке заглавные буквы firstLetter , вызывая firstLetter.toUpperCase () и присоединяет его к остальной части строка, которая найдена путем вызова str.substr (1) .

Вы можете подумать, что это не сработает для пустой строки, и на самом деле в языке, подобном C, вам придется обслужить это. Однако в JavaScript, когда вы берете подстроку пустой строки, вы просто возвращаете пустую строку.

28 голосов
/ 15 декабря 2010
String.prototype.capitalize = function(){
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();
    } );
};

Использование:

capitalizedString = someString.capitalize();

Это текстовая строка => Это текстовая строка

27 голосов
/ 06 мая 2014
var str = "test string";
str = str.substring(0,1).toUpperCase() + str.substring(1);
24 голосов
/ 08 ноября 2018

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

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

Результат:

'Foo'
21 голосов
/ 23 августа 2015

Оформить заказ:

var stringVal = 'master';
stringVal.replace(/^./, stringVal[0].toUpperCase()); // returns Master 
19 голосов
/ 19 ноября 2012
yourString.replace(/^[a-z]/, function(m){ return m.toUpperCase() });

(Вы можете инкапсулировать его в функцию или даже добавить его в прототип String, если часто его используете.)

17 голосов
/ 19 августа 2010

Функция ucfirst работает, если вы делаете это следующим образом.

function ucfirst(str) {
    var firstLetter = str.slice(0,1);
    return firstLetter.toUpperCase() + str.substring(1);
}

Спасибо J-P за акларацию.

16 голосов
/ 14 июля 2018
yourString.replace(/\w/, c => c.toUpperCase())

Я нашел эту функцию стрелки проще всего. Заменить соответствует первому буквенному символу (\w) вашей строки и преобразовать его в верхний регистр. Не нужно ничего более изворотливого.

16 голосов
/ 25 сентября 2014

Использование:

var str = "ruby java";

console.log(str.charAt(0).toUpperCase() + str.substring(1));

Он выведет "Ruby java" на консоль.

15 голосов
/ 19 сентября 2018

SHORTEST 3 решения, 1 и 2 обрабатывают случаи, когда s строка равна "", null и undefined:

 s&&s[0].toUpperCase()+s.slice(1)        // 32 char

 s&&s.replace(/./,s[0].toUpperCase())    // 36 char - using regexp

'foo'.replace(/./,x=>x.toUpperCase())    // 31 char - direct on string, ES6

let s='foo bar';

console.log( s&&s[0].toUpperCase()+s.slice(1) );

console.log( s&&s.replace(/./,s[0].toUpperCase()) );

console.log( 'foo bar'.replace(/./,x=>x.toUpperCase()) );
...