Hur gör jag den första bokstaven i en sträng till stor bokstav, men ändrar inte stor bokstavsbeteckningen för någon av de andra bokstäverna?
Till exempel:
"This is a test"
-> "This is a test"
"Eiffeltornet"
-> "Eiffeltornet"
-> "Eiffeltornet"
"/index.html"
-> "/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Vissa andra svar ändrar String.prototype
(detta svar brukade också göra det), men jag skulle avråda från detta nu på grund av underhållbarheten (svårt att ta reda på var funktionen läggs till i prototypen
och kan orsaka konflikter om annan kod använder samma namn / en webbläsare lägger till en inhemsk funktion med samma namn i framtiden).
Här är ett mer objektorienterat tillvägagångssätt:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Du kallar funktionen så här:
"hello world".capitalize();
Det förväntade resultatet blir:
"Hello world"
Här finns en funktion som heter ucfirst() (förkortning för "upper case first letter"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Du kan skriva en sträng med versaler genom att kalla ucfirst("some string") -- till exempel,
ucfirst("this is a test") --> "This is a test"
Det fungerar genom att strängen delas upp i två delar. På den första raden drar den ut firstLetter och på den andra raden kapitaliserar den firstLetter genom att kalla firstLetter.toUpperCase() och förenar den med resten av strängen, som hittas genom att kalla str.substr(1).
Man kan tro att detta skulle misslyckas med en tom sträng, och i ett språk som C måste man faktiskt ta hänsyn till detta. Men i JavaScript får man bara en tom sträng tillbaka när man tar en delsträng av en tom sträng.