Comment mettre la première lettre d'une chaîne en majuscule sans changer la casse des autres lettres ?
Par exemple :
"ceci est un test"
-> "Ceci est un test"
"la Tour Eiffel"
-> "La Tour Eiffel"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
D'autres réponses modifient String.prototype
(cette réponse le faisait aussi), mais je le déconseille maintenant pour des raisons de maintenabilité (il est difficile de savoir où la fonction est ajoutée au prototype
et cela pourrait causer des conflits si un autre code utilise le même nom / un navigateur ajoute une fonction native avec ce même nom dans le futur).
Voici une approche plus orientée objet :
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Vous appelleriez la fonction, comme ceci :
"hello world".capitalize();
Le résultat attendu étant :
"Hello world"
Voici une fonction appelée ucfirst() (abréviation de "upper case first letter") :
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Vous pouvez mettre une chaîne en majuscule en appelant ucfirst("une chaîne") -- par exemple,
ucfirst("this is a test") --> "This is a test"
Cela fonctionne en divisant la chaîne en deux parties. Sur la première ligne, il extrait la premièrelettre, puis sur la deuxième ligne, il met la premièrelettre en majuscule en appelant premièrelettre.toUpperCase() et la joint au reste de la chaîne, qui est trouvée en appelant str.substr(1).
On pourrait penser que cela échouerait dans le cas d'une chaîne vide, et en effet, dans un langage comme le C, il faudrait y remédier. Cependant, en JavaScript, lorsque vous prenez une sous-chaîne d'une chaîne vide, vous obtenez simplement une chaîne vide en retour.