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

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

Например:

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

Ответы [ 83 ]

2 голосов
/ 08 апреля 2015

В настоящее время проголосовавший ответ является правильным, но он не обрезает и не проверяет длину строки перед использованием заглавных букв первого символа.

String.prototype.ucfirst = function(notrim) {
    s = notrim ? this : this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');
    return s.length > 0 ? s.charAt(0).toUpperCase() + s.slice(1) : s;
}

Установите аргумент notrim, чтобы сначала не обрезать строку:

'pizza'.ucfirst()         => 'Pizza'
'   pizza'.ucfirst()      => 'Pizza'
'   pizza'.ucfirst(true)  => '   pizza'
2 голосов
/ 07 марта 2015

Я использую что-то подобное в моей среде разработки, особенно при работе с такими API, как HTTP:

Предположим, у вас есть HTTP-заголовок, в котором вы хотите использовать заглавные буквы в каждом имени и добавлять дефис между составляющими его словами. Вы можете достичь чего-то подобного, используя эту простую и простую процедуру:

'access control allow origin'
    .replace(/\b\w/g, function (match) {
        return match.toUpperCase();
    })
    .split(' ')
    .join('-');

// Output: 'Access-Control-Allow-Origin'

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

2 голосов
/ 16 декабря 2017

Попробуйте этот код:

alert("hello".substr(0, 1).toUpperCase() + "hello".substr(1));

То, что он делает, это берет первый символ в hello с прописной буквы и добавляет остальную часть в.

2 голосов
/ 14 февраля 2019

Я предпочитаю использовать решение, ориентированное на функциональный способ (например, отображение массива):

Array.from(str).map((letter, i) => i === 0 ? letter.toUpperCase() : letter ).join('');
1 голос
/ 23 декабря 2018

Для TypeScript

  capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  }
1 голос
/ 26 марта 2019

Ну, все ответы будут сбои, если метод передается с неожиданным типом данных, таким как Object или function.

Таким образом, чтобы гарантировать, что он не потерпит крах ни при каких условиях, нам нужно проверить типы.

capitalizeFirstLetter = string => {
  if (typeof string == "string") {
      console.log("passed");
    return string.charAt(0).toUpperCase() + string.slice(1);
  } else {
    console.log("error");
    return string;
  }
};

//type function
console.log(
  capitalizeFirstLetter(() => {
    return true;
  })
);
// error
//  () => { return true; }

//type object
console.log(capitalizeFirstLetter({ x: 1 }));
// error
// Object { x: 1 }

//type boolean
console.log(capitalizeFirstLetter(true));
// error
// true

//type undefined
console.log(capitalizeFirstLetter(undefined));
// error
// undefined

//type null
console.log(capitalizeFirstLetter(null));
// error
// null

//type NaN
console.log(capitalizeFirstLetter(NaN));
// error
// NaN

//type number
console.log(capitalizeFirstLetter(2));
// error
// 2

//type any for e.g. class
class Jaydeep {}
console.log(capitalizeFirstLetter(new Jaydeep()));
// error
// Object {}

//type string
console.log(capitalizeFirstLetter("1"));
console.log(capitalizeFirstLetter("a"));
console.log(capitalizeFirstLetter("@"));
console.log(capitalizeFirstLetter(""));
// 1
// A
// @
//  :empty string
1 голос
/ 01 июля 2018

Вы можете сделать что-то вроде этого:

mode =  "string";
string = mode.charAt(0).toUpperCase() + mode.substr(1,mode.length).toLowerCase();
console.log(string);

Это напечатает

String

1 голос
/ 30 января 2018

Одна строка («inputString может быть установлена ​​на любую строку»):

inputString.replace(/.{1}/, inputString.charAt(0).toUpperCase())
1 голос
/ 17 июня 2015

Если вы хотите использовать заглавные буквы каждую первую букву в строке, например hello to the world становится Hello To The World, вы можете использовать следующее (перепрофилировано от Стива Харрисона):

function capitalizeEveryFirstLetter(string) {
    var splitStr = string.split(' ')
    var fullStr = '';

    $.each(splitStr,function(index){
        var currentSplit = splitStr[index].charAt(0).toUpperCase() + splitStr[index].slice(1);
        fullStr += currentSplit + " "
    });

    return fullStr;
}

Который вы можете позвонить, используя следующие:

capitalizeFirstLetter("hello to the world");
0 голосов
/ 15 июля 2018

Для создания первой буквы строкового капитала

1-й раствор

«это тест» -> «это тест»

var word = "this is a test"
word[0].toUpperCase();

Это даст => «Это тест»

2-е решение для создания первого слова из строчной буквы

«это тест» -> «это тест»

function capitalize(str) {

    const word = [];

    for(let char of str.split(' ')){
        word.push(char[0].toUpperCase() + char.slice(1))
    }

    return word.join(' ');

}

 capitalize("this is a test");

Это даст => «Это тест»

...