Kako lahko prvo črko v nizu spremenim v veliko črko, vendar ne spremenim velikosti drugih črk?
Na primer:
"to je test"
-> "To je test"
"Eifflov stolp"
-> "Eifflov stolp"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Nekateri drugi odgovori spreminjajo String.prototype
(tudi ta odgovor je to počel), vendar bi to odsvetoval zaradi vzdržljivosti (težko je ugotoviti, kje je funkcija dodana v prototype
, in lahko povzroči konflikte, če druga koda uporablja isto ime / če brskalnik v prihodnosti doda lastno funkcijo z istim imenom).
Tukaj je bolj objektno usmerjen pristop:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Funkcijo pokličete na naslednji način:
"hello world".capitalize();
Pričakovani rezultat je:
"Hello world"
Tu je funkcija ucfirst() (kratica za "velika začetna črka"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Niz lahko napišete z veliko začetnico tako, da pokličete ucfirst("some string") -- na primer,
ucfirst("this is a test") --> "This is a test"
Deluje tako, da razdeli niz na dva dela. V prvi vrstici izvleče prvoLetter, nato pa v drugi vrstici prvoLetter napiše z veliko začetnico tako, da pokliče firstLetter.toUpperCase() in ga poveže s preostalim nizom, ki ga poišče s klicem str.substr(1).
Morda se vam zdi, da to ne bo uspelo pri praznem nizu, in v jeziku, kot je C, bi bilo treba to predvideti. Vendar pa v jeziku JavaScript, ko vzamete podrejeni niz praznega niza, dobite nazaj samo prazen niz.