Как да направя така, че първата буква на даден низ да е главна в JavaScript?

Как да направя първата буква в низ главна, но да не променям големината на останалите букви?

Например:

  • "this is a test" -> "This is a test"
  • "Айфеловата кула" -> "Айфеловата кула"
  • "/index.html" -> "/index.html"
function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

Някои други отговори модифицират String.prototype (този отговор също го правеше), но сега не бих препоръчал това да се прави заради възможността за поддържане (трудно е да се разбере къде е добавена функцията към prototype и може да доведе до конфликти, ако друг код използва същото име / браузър добави местна функция със същото име в бъдеще).

Коментари (32)

Ето един по-обектно-ориентиран подход:

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

Ще извикате функцията по следния начин:

"hello world".capitalize();

Очакваният резултат е:

"Hello world" 
Коментари (21)

Тук има функция, наречена ucfirst() (съкращение от "първа буква от горен регистър"):

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

Можете да напишете главни букви в даден низ, като извикате ucfirst("some string") -- например,

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

Това става чрез разделяне на низа на две части. На първия ред изважда firstLetter и след това на втория ред изписва firstLetter с главна буква, като извиква firstLetter.toUpperCase() и го съединява с останалата част от низа, която се намира чрез извикване на str.substr(1).

Може да си помислите, че това няма да успее при празен низ, и наистина в език като C би трябвало да се погрижите за това. В JavaScript обаче, когато вземете подниз от празен низ, просто получавате празен низ обратно.

Коментари (4)