¿Cómo puedo hacer que la primera letra de una cadena sea mayúscula, pero sin cambiar el caso de ninguna de las otras letras?
Por ejemplo:
"esto es una prueba"->
"Esto es una prueba"->"la Torre Eiffel"->
"La Torre Eiffel"`"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Algunas otras respuestas modifican String.prototype
(esta respuesta también lo hacía), pero yo desaconsejaría esto ahora debido a la capacidad de mantenimiento (es difícil averiguar dónde se añade la función al prototipo
y podría causar conflictos si otro código utiliza el mismo nombre / un navegador añade una función nativa con ese mismo nombre en el futuro).
Este es un enfoque más orientado a los objetos:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Llamarías a la función, así:
"hello world".capitalize();
Con la salida esperada siendo:
"Hello world"
Aquí hay una función llamada ucfirst() (abreviatura de "primera letra mayúscula"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Puedes poner en mayúsculas una cadena llamando a ucfirst("alguna cadena") -- por ejemplo,
ucfirst("this is a test") --> "This is a test"
Funciona dividiendo la cadena en dos partes. En la primera línea saca primeraLetra y luego en la segunda línea pone en mayúsculas primeraLetra llamando a primeraLetra.toUpperCase() y la une con el resto de la cadena, que se encuentra llamando a str.substr(1).
Se podría pensar que esto fallaría con una cadena vacía y, de hecho, en un lenguaje como C habría que tenerlo en cuenta. Sin embargo, en JavaScript, cuando se toma una subcadena de una cadena vacía, sólo se obtiene una cadena vacía.