J'ai cherché sur le Web, je ne trouve rien pour m'aider. Je veux mettre la première lettre de chaque mot en majuscule dans une variable.
Jusqu'à présent, j'ai essayé:
toUpperCase();
Et n'a pas eu de chance, car il met toutes les lettres en majuscules.
javascript
jquery
Ryryan
la source
la source
Réponses:
Utilisez la fonction
.replace
[MDN] pour remplacer les lettres minuscules qui commencent un mot par la lettre majuscule.var str = "hello world"; str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Hello World"
Edit: Si vous avez affaire à des caractères de mot autres que az, alors l'expression régulière (plus compliquée) suivante pourrait mieux convenir à vos besoins.
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 Αλφα"
la source
Björn Lüchinger
, cela devientBjöRn LüChinger
. Une solution à cela?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);
pour couvrir les caractères spéciaux.Manière beaucoup plus simple:
$('#test').css('textTransform', 'capitalize');
Je dois remercier @Dementic de m'avoir conduit sur la bonne voie. Bien plus simple que tout ce que vous proposez.
la source
text-transform:capitalize
n'affectera pas TOUTES LES MAJUSCULES.http://phpjs.org/functions/ucwords:569 a un bon exemple
function ucwords (str) { return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) { return $1.toUpperCase(); }); }
(commentaire de fonction omis de la source par souci de concision. Veuillez consulter la source liée pour plus de détails)
EDIT: veuillez noter que cette fonction met en majuscule la première lettre de chaque mot (comme votre question le demande) et pas seulement la première lettre d'une chaîne (comme le titre de votre question le demande)
la source
je voulais juste ajouter une solution javascript pure (pas de 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'));
la source
c < str.length;
devrait êtrechr < str.length;
J'imagine que vous pouvez utiliser substring () et toUpperCase () pour extraire le premier caractère, le mettre en majuscule, puis remplacer le premier caractère de votre chaîne par le résultat.
myString = "cheeseburger"; firstChar = myString.substring( 0, 1 ); // == "c" firstChar.toUpperCase(); tail = myString.substring( 1 ); // == "heeseburger" myString = firstChar + tail; // myString == "Cheeseburger"
Je pense que cela devrait fonctionner pour vous. Une autre chose à considérer est que si ces données sont affichées, vous pouvez ajouter une classe à son conteneur qui a la propriété CSS "text-transform: capitalize".
la source
Pour ce faire, vous n'avez même pas vraiment besoin de Javascript si vous comptez utiliser
$('#test').css('textTransform', 'capitalize');
Pourquoi ne pas faire ça comme css
ou faites-le en tant que classe et appliquez cette classe là où vous en avez besoin
la source
Jamais entendu parler
substr()
?Pour une entrée:
$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
[Mise à jour:]
Merci à @FelixKling pour le conseil:
$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase() + text.substr(1); });
la source
text()
quatre fois, passez une fonction àtext()
:$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize');
BTW, c'est la meilleure réponse ici. Je vais le soumettre comme réponse.document.getElementById('test').style.textTransform='capitalize';
En me basant sur la réponse de @ peter-olson, j'ai adopté une approche plus orientée objet sans 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"
Exemple: http://jsfiddle.net/LzaYH/1/
la source
toUpperCaseWords
en ligne avec javascripttoUpperCase()
ettoLowerCase()
var mystring = "hello World" mystring = mystring.substring(0,1).toUpperCase() + mystring.substring(1,mystring.length) console.log(mystring) //gives you Hello World
la source
Le moyen le plus simple
let str="hiren raiyani" str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
fonction définie par l'utilisateur:
function capitalize(str){ return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase()); }
sortie: Hiren Raiyani
Utilisez le code comme fonction définie par l'utilisateur ou
la source
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
la source
Vous pouvez essayer ce code simple avec les fonctionnalités d'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');
Cela gardera les majuscules inchangées.
la source
C'est aussi simple que ce qui suit:
string = 'test'; newString = string[0].toUpperCase() + string.slice(1); alert(newString);
la source
Basée entièrement sur la réponse de @Dementric, cette solution est prête à être appelée avec une simple méthode jQuery, 'ucwords' ... Merci à tous ceux qui ont contribué ici !!!
$.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 }
});
EXEMPLE: Ceci peut être appelé en utilisant la méthode
var string = "this is a test"; string = $.ucwords(string); // Returns "This Is A Test"
la source
Vous pouvez utiliser
text-transform: capitalize;
pour ce travail -HTML -
<input type="text" style="text-transform: capitalize;" />
JQuery -
$(document).ready(function (){ var asdf = "WERTY UIOP"; $('input').val(asdf.toLowerCase()); });
Essaye ça
Remarque: cela ne change que la représentation visuelle de la chaîne. Si vous alertez cette chaîne, elle affiche toujours la valeur d'origine de la chaîne.
la source
Chaîne à abaisser avant de mettre en majuscule la première lettre.
(Les deux utilisent la syntaxe Jquery)
function CapitaliseFirstLetter(elementId) { var txt = $("#" + elementId).val().toLowerCase(); $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); })); }
En plus une fonction pour capitaliser la chaîne ENTIER:
function CapitaliseAllText(elementId) { var txt = $("#" + elementId).val(); $("#" + elementId).val(txt.toUpperCase()); }
Syntaxe à utiliser sur l'événement click d'une zone de texte:
onClick="CapitaliseFirstLetter('TextId'); return false"
la source
J'ai utilisé ce code -
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);
la source
Html:
<input class="capitalize" name="Address" type="text" value="" />
Javascript avec 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(); })) });
la source
Sans 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
la source
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);
la source
Voici la fonction ucwords () sécurisée par unicode, qui respecte en outre les doubles noms de famille comme le russe Засс-Ранцев et certains noms nobles comme 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(); }); }
la source
Le moyen le plus simple de mettre en majuscule la première lettre dans JS
var string = "made in india"; string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return letter.toUpperCase();}); alert(string );
Résultat: "Made In India"
la source