Majuscule 1ere lettre Javascript

Résolu/Fermé
Mike - 30 août 2012 à 10:53
 julienlecaro - 29 juin 2015 à 16:04
Bonjour,

Je cherche une petite fonction qui me permettrait de détecter un espace et de mettre en majuscule la 1ere lettre de cahque mot.
Ex : BIENVENUE SUr le site.
Je voudrais avoir: Bienvenue Sur Le Site

Jai réussi à faire cela avec split() et substring() uppercase...
mais certain string ne contiennent que 2 mots, d'autre peuvent en avoir 5 etc...
Comment faire pour mettre chaque caractère dans un tableau puis mettre en majuscule la 1ere lettre ?

Merci de votre aide

A voir également:

4 réponses

Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
30 août 2012 à 11:24
Allez voilà une solution qui fonctionne, encapsulée dans une méthode.
La méthode prend 2 paramètres :
1/ un booléen qui vaut true si tu veux que la première lettre du texte soit également mise en majuscule ; false sinon.
2/ le texte à convertir


<script type="text/javascript">
	function setMajToAllWords(toFirstWord, texte){
		var newText = (toFirstWord == true) ? texte.charAt(0).toUpperCase() : texte.charAt(0);
		for (var i=0 ; i<texte.length-1 ; i++){
			if (texte.charAt(i).match(/\s/) && texte.charAt(i+1).match(/[a-z]/)){
				newText += texte.charAt(i+1).toUpperCase();
			} else {
				newText += texte.charAt(i+1);
			}
		}
		return newText;
	}
	
	// Exemples
	alert (setMajToAllWords(false, "bonjour a tous")); // Affiche "bonjour A Tous"
	alert (setMajToAllWords(true, "bonjour a tous")); // Affiche "Bonjour A Tous"
</script>

10
Super !
merci beaucoup Mihawk ;)
0
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
30 août 2012 à 11:44
Au plaisir !
Mets donc un +1 à la réponse histoire qu'elle s'affiche en évidence.
0
Salut,

Pour ceux qui cherchent la solution :

texte = texte.replace(/\s([a-z])/g, function($1) {return $1.toUpperCase()});
2
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
30 août 2012 à 10:57
Hello,

On va faire plus simple avec les expression régulières...

var texte = "bonjour a tous"
texte = texte.replace(/\s([a-z])/, $1.toUpperCase());


Je ne l'ai pas vérifié, à tester donc !
0
merci pour ta réponse
je vais tester et je reviens :)
0
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
30 août 2012 à 11:01
J'ai testé, ça ne tourne pas.
Je cherche une solution.
0
oui en effet, $1 n'est pas reconnu
merci pour ton aide
0
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
Modifié par Mihawk le 30/08/2012 à 11:10
Bon bah zut j'y arrive pas... J'ai essayé ça :

<script type="text/javascript"> 
 var texte = "bonjour a tous"; 
 texte = texte.replace(/\s([a-z])/g, " $1".toUpperCase()); 
 alert(texte); 
</script>

Je pensais vraiment que ça marcherait mais 'faut croire que le toUpperCase() dans un replace il n'aime pas :-/

[EDIT] : en fait il aime bien, mais pas avec le $1 c'est assez étrange !

Mihawk
"The Weapon of Choice"
0