Hvordan kan jeg gjøre den første bokstaven i en streng stor, men ikke endre de andre bokstavene?
For eksempel
""Eiffeltårnet""
-> ""Eiffeltårnet""
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Noen andre svar endrer String.prototype
(dette svaret pleide også å gjøre det), men jeg vil fraråde dette nå på grunn av vedlikeholdbarhet (vanskelig å finne ut hvor funksjonen blir lagt til prototypen
og kan forårsake konflikter hvis annen kode bruker samme navn / en nettleser legger til en innfødt funksjon med samme navn i fremtiden).
Her er en mer objektorientert tilnærming:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Du'ville kalle funksjonen, som dette:
"hello world".capitalize();
Med den forventede utdataen som er:
"Hello world"
Her er en funksjon som heter ucfirst() (forkortelse for "stor forbokstav"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Du kan bruke store bokstaver i en streng ved å kalle ucfirst("some string") -- for eksempel,
ucfirst("this is a test") --> "This is a test"
Det fungerer ved å dele strengen i to deler. På den første linjen trekkes firstLetter ut, og på den andre linjen gjøres firstLetter til stor bokstav ved å kalle firstLetter.toUpperCase() og settes sammen med resten av strengen, som finnes ved å kalle str.substr(1).
Du tror kanskje dette ville mislykkes for en tom streng, og i et språk som C må du faktisk ta høyde for dette. Men i JavaScript, når du tar en delstreng av en tom streng, får du bare en tom streng tilbake.