Hoe maak ik de eerste letter van een string hoofdletter, maar verander ik de hoofdletter van geen van de andere letters?
Bijvoorbeeld:
"dit is een test"
-> "Dit is een test"
"de Eiffeltoren"
-> "de Eiffeltoren"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Sommige andere antwoorden wijzigen String.prototype
(dit antwoord deed dat vroeger ook), maar ik zou dit nu afraden vanwege de onderhoudbaarheid (moeilijk te achterhalen waar de functie aan het prototype
wordt toegevoegd en zou conflicten kunnen veroorzaken als andere code dezelfde naam gebruikt / een browser in de toekomst een native functie met diezelfde naam toevoegt).
Hier's een meer object-georiënteerde benadering:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Je roept de functie aan, zoals dit:
"hello world".capitalize();
Met als verwachte output:
"Hello world"
Hier is een functie genaamd ucfirst() (kort voor "hoofdletter eerste letter"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Je kunt een tekenreeks een hoofdletter geven door ucfirst("some string") op te roepen -- bijvoorbeeld,
ucfirst("this is a test") --> "This is a test"
Het werkt door de string in twee stukken te splitsen. Op de eerste regel wordt firstLetter eruit gehaald en op de tweede regel wordt firstLetter met firstLetter.toUpperCase() met een hoofdletter geschreven en samengevoegd met de rest van de string, die wordt gevonden door str.substr(1) op te roepen.
Je zou kunnen denken dat dit zou mislukken voor een lege string, en in een taal als C zou je hier inderdaad rekening mee moeten houden. Maar in JavaScript, als je een substring van een lege string neemt, krijg je gewoon een lege string terug.