Hvordan kan jeg gøre det første bogstav i en streng til stort bogstav, men ikke ændre kasus på de andre bogstaver?
For eksempel:
"This is a test"
-> "This is a test"
"Eiffeltårnet"
-> "Eiffeltårnet"
"/index.html"
-> "/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Nogle andre svar ændrer String.prototype
(dette svar gjorde det også tidligere), men jeg vil fraråde dette nu af hensyn til vedligeholdelsen (det er svært at finde ud af, hvor funktionen tilføjes til prototypen
, og det kan give konflikter, hvis anden kode bruger samme navn / en browser tilføjer en native funktion med samme navn i fremtiden).
Her er en mere objektorienteret tilgang:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Du ville kalde funktionen, som her:
"hello world".capitalize();
Med det forventede output som:
"Hello world"
Her er en funktion kaldet ucfirst() (en forkortelse for "upper case first letter"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Du kan skrive en streng med stort begyndelsesbogstav ved at kalde ucfirst("some string") -- f.eks,
ucfirst("this is a test") --> "This is a test"
Det fungerer ved at dele strengen i to stykker. På den første linje trækker den firstLetter ud, og på den anden linje kapitaliserer den firstLetter ved at kalde firstLetter.toUpperCase() og sammenføjer den med resten af strengen, som findes ved at kalde str.substr(1).
Man kunne tro, at dette ville mislykkes for en tom streng, og i et sprog som C er man faktisk nødt til at tage højde for dette. Men i JavaScript får man bare en tom streng tilbage, når man tager en delstreng af en tom streng.