Come posso rendere la prima lettera di una stringa maiuscola, ma non cambiare il caso di nessuna delle altre lettere?
Per esempio:
"questo è un test"
-> "questo è un test"
"the Eiffel Tower"
-> "The Eiffel Tower"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Alcune altre risposte modificano String.prototype
(anche questa risposta lo faceva), ma lo sconsiglio ora a causa della manutenibilità (difficile scoprire dove la funzione viene aggiunta al prototipo
e potrebbe causare conflitti se altro codice usa lo stesso nome / un browser aggiunge una funzione nativa con lo stesso nome in futuro).
Ecco un approccio più orientato agli oggetti:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Si chiama la funzione, in questo modo:
"hello world".capitalize();
Con l'output previsto che è:
"Hello world"
Ecco una funzione chiamata ucfirst() (abbreviazione di "upper case first letter"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Si può mettere in maiuscolo una stringa chiamando ucfirst("qualche stringa") -- per esempio,
ucfirst("this is a test") --> "This is a test"
Funziona dividendo la stringa in due parti. Sulla prima riga estrae firstLetter e poi sulla seconda riga capitalizza firstLetter chiamando firstLetter.toUpperCase() e la unisce al resto della stringa, che si trova chiamando str.substr(1).
Si potrebbe pensare che questo possa fallire per una stringa vuota, e in effetti in un linguaggio come il C si dovrebbe provvedere a questo. Tuttavia in JavaScript, quando si prende una sottostringa di una stringa vuota, si ottiene semplicemente una stringa vuota.