¿Cómo puedo hacer que la primera letra de una cadena sea mayúscula en JavaScript?

¿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).

Comentarios (32)

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" 
Comentarios (21)

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.

Comentarios (4)