Pregunta Mayúscula primera letra de la variable


He buscado en la web no puedo encontrar nada para ayudarme. Quiero hacer la primera letra de cada palabra mayúscula dentro de una variable.

Hasta ahora lo he intentado:

toUpperCase();

Y no tuvo suerte, ya que domina todas las letras.


73
2018-02-25 20:44


origen


Respuestas:


Utilizar el .replace[MDN] función para reemplazar las letras minúsculas que comienzan una palabra con la letra mayúscula.

var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"


Editar: si está tratando con caracteres de palabras que no sean simplemente a-z, 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 Αλφα"


197
2018-02-25 20:49



Manera mucho más fácil:

$('#test').css('textTransform', 'capitalize');

Tengo que darle cierto crédito a @Dementic por guiarme por el camino correcto. Mucho más simple que lo que sea que ustedes estén proponiendo.


61
2017-10-04 19:57



http://phpjs.org/functions/ucwords:569 tiene un buen ejemplo

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(se omite el comentario de la función de la fuente para abreviar. Consulte la fuente vinculada para más detalles)

EDIT: tenga en cuenta que esta función mayúscula la primera letra de cada palabra (como pregunta su pregunta) y no solo la primera letra de una cadena (como se pregunta el título de su pregunta)


23
2018-02-25 20:47



Me imagino que podría usar subserie () y toUpperCase () para extraer el primer carácter, en mayúscula y luego reemplazar el primer carácter de su cadena con el resultado.

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"

Creo que debería funcionar para ti. Otra cosa a considerar es que si se muestran estos datos, puede agregar una clase a su contenedor que tenga la propiedad CSS "text-transform: capitalize".


13
2018-02-25 20:51



solo quería agregar una solución javascript pura (sin JQuery)

function capitalize(str) {
    strVal = '';
    str = str.split(' ');
    for (var chr = 0; chr < str.length; chr++) {
        strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
    }
    return strVal
}

11
2017-08-01 11:18



Para hacer esto, realmente no necesitas Javascript si vas a usar

$('#test').css('textTransform', 'capitalize');

¿Por qué no hacer esto como css like

#test,h1,h2,h3 { text-transform: capitalize; }

o hazlo como clase y aplica esa clase donde sea que la necesites

.ucwords { text-transform: capitalize; }

8
2018-01-29 15:37



Alguna vez escuché de substr() ?

Para empezar:

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));


[Actualizar:]

Gracias a @FelixKling para el consejo:

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});

6
2018-02-25 20:58



Sobre la base de la respuesta de @ peter-olson, tomé un enfoque más orientado a objetos sin jQuery:

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"

Ejemplo: http://jsfiddle.net/LzaYH/1/


4
2018-02-26 20:21