He buscado en la web y no puedo encontrar nada que me ayude. Quiero hacer que la primera letra de cada palabra sea mayúscula dentro de una variable.
Hasta ahora he probado:
toUpperCase();Y no tuvo suerte, ya que mayúsculas todas las letras.
Use la .replace [MDN] para reemplazar las letras minúsculas que comienzan una palabra con la letra mayúscula.
var str = "hello world"; str = str.toLowerCase().replace(/\b[az]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Hello World"Editar: si está tratando con caracteres de palabras que no sean solo az, entonces la siguiente expresión regular (más complicada) podría adaptarse mejor a sus propósitos.
var str = "петр данилович björn über ñaque αλφα"; str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Петр Данилович Björn Über Ñaque Αλφα"Una manera mucho más fácil:
$('#test').css('textTransform', 'capitalize');
Tengo que darle a @Dementic algo de crédito por guiarme por el camino correcto. Mucho más simple que lo que ustedes están proponiendo.
http://phpjs.org/functions/ucwords:569 tiene un buen ejemplo
function ucwords (str) { return (str + '').replace(/^([az])|\s+([az])/g, function ($1) { return $1.toUpperCase(); }); }(Comentario de función omitido de la fuente por brevedad. Consulte la fuente vinculada para obtener más detalles)
EDITAR: tenga en cuenta que esta función escribe en mayúsculas la primera letra de cada palabra (como lo pregunta su pregunta) y no solo la primera letra de una cadena (como lo pregunta el título de su pregunta)