He buscado en la web y no puedo encontrar nada que me ayude. Quiero poner la primera letra de cada palabra en mayúscula dentro de una variable.
Hasta ahora he intentado:
toUpperCase();
Y no tuve suerte, ya que escribe en mayúsculas todas las letras.
javascript
jquery
Ryryan
fuente
fuente
Respuestas:
Utilice la función
.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[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 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 Αλφα"
fuente
Björn Lüchinger
, esto se convierte enBjöRn LüChinger
. ¿Alguna solución para esto?str[0].toUpperCase() + str.slice(1)
var first = str.slice(0, str.indexOf(' ')); str = first.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }) + str.substr(first.length);
para cubrir caracteres especiales.Manera mucho más fácil:
$('#test').css('textTransform', 'capitalize');
Tengo que darle algo de crédito a @Dementic por haberme guiado por el camino correcto. Mucho más simple de lo que están proponiendo.
fuente
text-transform:capitalize
no afectará TODAS LAS MAYÚSCULAS.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(); }); }
(comentario de función omitido de la fuente para mayor brevedad. Consulte la fuente vinculada para obtener más detalles)
EDITAR: tenga en cuenta que esta función pone en mayúsculas la primera letra de cada palabra (como lo pide su pregunta) y no solo la primera letra de una cadena (como lo pide el título de su pregunta)
fuente
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 } console.log(capitalize('hello world'));
fuente
c < str.length;
debería serchr < str.length;
Me imagino que podría usar substring () y toUpperCase () para extraer el primer carácter, ponerlo en mayúsculas 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 eso 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".
fuente
Para hacer esto, ni siquiera necesita Javascript si va a utilizar
$('#test').css('textTransform', 'capitalize');
¿Por qué no hacer esto como CSS?
o hazlo como una clase y aplica esa clase donde sea que la necesites
fuente
¿Has oído hablar alguna vez
substr()
?Para empezar:
$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
[Actualizar:]
Gracias a @FelixKling por el consejo:
$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase() + text.substr(1); });
fuente
text()
cuatro veces, pase una función atext()
:$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize');
Por cierto, esta es la mejor respuesta aquí. Lo enviaré como respuesta.document.getElementById('test').style.textTransform='capitalize';
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/
fuente
toUpperCaseWords
de acuerdo con javascripttoUpperCase()
ytoLowerCase()
var mystring = "hello World" mystring = mystring.substring(0,1).toUpperCase() + mystring.substring(1,mystring.length) console.log(mystring) //gives you Hello World
fuente
Manera más simple
let str="hiren raiyani" str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
función definida por el usuario:
function capitalize(str){ return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase()); }
salida: Hiren Raiyani
Utilice el código como su función definida por el usuario o directamente
fuente
var ar = 'foo bar spam egg'.split(/\W/); for(var i=0; i<ar.length; i++) { ar[i] = ar[i].substr(0,1).toUpperCase() + ar[i].substr(1,ar[i].length-1) } ar.join(' '); // Foo Bar Spam Egg
fuente
Puede probar este código simple con las características de ucwords en PHP.
function ucWords(text) { return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' '); } ucWords('hello WORLD');
Mantendrá los casos superiores sin cambios.
fuente
Es tan simple como lo siguiente:
string = 'test'; newString = string[0].toUpperCase() + string.slice(1); alert(newString);
fuente
Basado completamente en la respuesta de @Dementric, esta solución está lista para llamar con un método simple de jQuery, 'ucwords' ... ¡¡¡Gracias a todos los que contribuyeron aquí !!!
$.extend({ ucwords : function(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 }
});
EJEMPLO: Esto se puede llamar usando el método
var string = "this is a test"; string = $.ucwords(string); // Returns "This Is A Test"
fuente
Puede utilizar
text-transform: capitalize;
para este trabajo:HTML -
<input type="text" style="text-transform: capitalize;" />
JQuery -
$(document).ready(function (){ var asdf = "WERTY UIOP"; $('input').val(asdf.toLowerCase()); });
Prueba esto
Nota: Solo cambia la representación visual de la cadena. Si alerta a esta cadena, siempre mostrará el valor original de la cadena.
fuente
La cadena para bajar antes de poner en mayúscula la primera letra.
(Ambos usan la sintaxis de Jquery)
function CapitaliseFirstLetter(elementId) { var txt = $("#" + elementId).val().toLowerCase(); $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); })); }
Además, una función para poner en mayúscula TODA la cadena:
function CapitaliseAllText(elementId) { var txt = $("#" + elementId).val(); $("#" + elementId).val(txt.toUpperCase()); }
Sintaxis para usar en el evento de clic de un cuadro de texto:
onClick="CapitaliseFirstLetter('TextId'); return false"
fuente
He usado este código -
function ucword(str){ str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) { return replace_latter.toUpperCase(); }); //Can use also /\b[a-z]/g return str; //First letter capital in each word } var uc = ucword("good morning. how are you?"); alert(uc);
fuente
HTML:
<input class="capitalize" name="Address" type="text" value="" />
Javascript con jQuery:
$(".capitalize").bind("keyup change", function (e) { if ($(this).val().length == 1) $(this).val($(this).val().toUpperCase()); $(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) { return letter.toUpperCase(); })) });
fuente
Sin JQuery
String.prototype.ucwords = function() { str = this.trim(); return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){ return s.toUpperCase(); }); }; console.log('hello world'.ucwords()); // Display Hello World
fuente
var str = "HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD"; str = str.replace( /([A-Z])([A-Z]+)/g, function (a, w1, w2) { return w1 + w2.toLowerCase(); }); alert(str);
fuente
Aquí está la función ucwords () segura para Unicode, que además respeta los apellidos dobles como el ruso Засс-Ранцев y algunos nombres nobles como Honoré de Balzac, d'Artagnan, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd, etc.
String.prototype.ucwords = function() { return this.toLowerCase() .replace(/(^|\s|\-)[^\s$]/g, function(m) { return m.toUpperCase(); }) // French, Arabic and some noble names... .replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc. return m.toLowerCase(); }) .replace(/(^|\s)(D|Д)(['’][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / Д’Артаньян или д’Артаньян return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase(); }); }
fuente
La forma más fácil de poner la primera letra en mayúscula en JS
var string = "made in india"; string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return letter.toUpperCase();}); alert(string );
Resultado: "Hecho en India"
fuente