Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2011, 16h35   #1
Membre à l'essai
 
Inscription : avril 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 140
Points : 21
Points : 21
Par défaut mettre les premiers lettres prenom composé en majuscule

Bonjour,Mon problème est le suivant:
J'ai un champ prenom et je veux étudier le cas ou la personne s'appelle par exemple:jean,d'autre jean-marc et d'autre jean-marc-andré
si le prenom est jean->on aura Jean
si le prenom est jean-marc->on aura Jean-Marc
si le prenom est jean-marc-andre->on aura Jean-Marc-Andre

Voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function majusculePrenom(idPrenom){
	var obj=document.getElementById(idPrenom);
	var chaine=obj.value;
	var reg=new RegExp("[-]+", "g");
	var Sous_Chaine=chaine.split(reg);
	compteur=1;
	var nom="";
	for(i=0;i<Sous_Chaine.length;i++){
		document.write("Sous_Chaine.[" + i + "] = " + Sous_Chaine.[i] + "<BR>");
		var lettre_un=Sous_Chaine.[i][0].toUpperCase();
		var reste_mot=Sous_Chaine[i].substring(1).toLowerCase();
		var prenom =lettre_un+reste_mot;
		alert(prenom);
      return prenom;
	}
}

Je ne sais pas comment fairte pour concater le premier souschaine avec le deuxième et le troisième ainsi de suite.
car là j'ai que Jean puis Marc puis André tout s'ecrase.
Aidez moi svp!!!
sajodia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 16h55   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
solution en 1 ligne :

Code js :
1
2
3
4
5
6
function majusculePrenom(idPrenom){
  return idPrenom.replace(/^[a-z]|-[a-z]/g,function(a){return a.toUpperCase();});
}
 
 
alert(majusculePrenom("jean-pierre"))


edit: et encore, je suis nul en regExp, je suis certains que mes collègues ici trouveront plus court.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 17h02   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function MajNom(nom){
var tabnom=nom.split('-')
var i=-1;
var Maj="";
while(tabnom[++i]){
 tabnom[i]=FirstUp(tabnom[i])
 }
tabnom=tabnom.join('-')
return tabnom
}
 
function FirstUp(nom){ 
return nom.replace(/(\w)(\w+)/,function(T,M,C){return M.toUpperCase()+C})
}
 
alert(MajNom("jean-pierre"))
 
alert(MajNom("jean"))
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 17h10   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
:red:
Et moi je suis parti tête baissée sur un split ...

il y a en effet plus simple :
Code :
1
2
3
4
5
6
7
function MajNom(nom){ 
return nom.replace(/(\b\w)/g,function(T,L){return L.toUpperCase()})
}
 
alert(MajNom("jean-pierre"))
 
alert(MajNom("jean"))
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 18h56   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
même pas besoin des parenthèses. (ni du second paramètre "T,L")
Code js :
1
2
3
4
function majusculePrenom(n){
  return n.replace(/\b\w/g,function(T){return T.toUpperCase()});
}
alert(majusculePrenom("marc-antoine-andré-dfsgdf-sdfgsdf-sdfgdfg-o"));

cool, je commence enfin à apprendre/comprendre les RegExp après plus de 10 ans de programmation.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 19h04   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Tout a fait, mais en fait si tu veux limiter le remplacement lors de la présence d'un tiret -tu es obligé de passer plusieurs paramètres
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 19h26   #7
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Citation:
Envoyé par SpaceFrog Voir le message
Tout a fait, mais en fait si tu veux limiter le remplacement lors de la présence d'un tiret -tu es obligé de passer plusieurs paramètres
en fait, je pense que ma toute première solution était quand même meilleure ! parce que avec de l'utf-8 :


alert(majusculePrenom("michèle"));
--> MichèLe
en utilisant \b

à part ça, je ne suis pas hyper calé en regExp, mais je ne vois pas à quoi sert les second paramètre ici.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 21h29   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
se sont en fait les groupes de capture de la regex
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h07   #9
Membre à l'essai
 
Inscription : avril 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 140
Points : 21
Points : 21
Au fait Quand j'utilise votre code j'ai une erreur
au niveau de: prenom=prenom.join('-');
comme quoi cet objet ne gère pas cette proprieté.
donc j'ai voulu terminer mon code quand je sens que je ne suis plus loin de la fin.
Mon seul problème si je tape jean-pierre-bernard,l'alert de mon prenom me renvoie d'abord Jean ensuite un autre alert Pierre ensuite un troisième Bernard.
Je ne sais pas comment récupérer Jean puis le concatener à Pierre Puis à Bernard.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 function majusculePrenom(idprenom){
	var obj=document.getElementById(idprenom);
	var chaine=obj.value;
	var reg=new RegExp("[-]+", "g");
	var Sous_Chaine=chaine.split(reg);
	compteur=1;
 
	for(i=0;i<Sous_Chaine.length;i++){
		document.write("Sous_Chaine[" + i + "] = " + Sous_Chaine[i] + "<BR>");
		var lettre_un=Sous_Chaine[i][0].toUpperCase();
		var reste_mot=Sous_Chaine[i].substring(1).toLowerCase();
		var prenom="";
		var prenom =lettre_un+reste_mot;
		prenom=prenom.join('-');
		alert(prenom);
      //return prenom;
	}
}
En gros je n'arrive pas à concaténer mes Sous_Chaine et le remplacer par le prénom qui a été tapé.
sajodia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h21   #10
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Code :
alert("éTienne-cHArles-henrI".toLowerCase().replace(/(^.|-.)/g,function(e){return e.toUpperCase()}))
résout le problème des caractères accentués et des majuscules aléatoires;

reste à affiner les règles de saisie (utilisation autorisée du tiret entre 2 prénoms et rien d'autre)
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h39   #11
Membre à l'essai
 
Inscription : avril 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 140
Points : 21
Points : 21
Super!!! cette ligne marche bien mais je ne comprends pas trop.Pouvez-vous m'expliquer c'est quoi le e en paramètres dans la fonction.
L'alert est bien fait ex:Jean-Pierre-Pernard
Mais la valeur ne se change pas dans mon input
sajodia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h46   #12
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
excuse-moi, je n'avais pas compris que tu voulais corriger le champ lui-même;


Code :
1
2
3
4
5
function correct(mon_champ){// tu passes la valeur du champ
 
mon_champ.value=mon_champ.toLowerCase().replace(/(^.|-.)/g,function(e){return e.toUpperCase()})
 
}
le "e" c'est l'expression recherchée dans la chaîne;
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h51   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
on peut simplement virer les accents ...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
function MajNom(nom){ 
return nom.replace( /(\b|-)(\w)/g,function(T,sep,L){return sep+L.toUpperCase()})
}
var TabSpec = {"à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","è":"e","é":"e","ê":"e","ë":"e","ç":"c","ì":"i","í":"i","î":"i","ï":"i","ù":"u","ú":"u","û":"u","ü":"u","ÿ":"y","ñ":"n","-":" ","_":" "}; 
 
function replaceSpec(Texte){
	var reg=/[òóôõöøèéêëçìíîïùúûüÿñ_-]/gi; 
	return Texte.replace(reg,function(){ return TabSpec[arguments[0].toLowerCase()];}).toLowerCase();
 	}
 
var TestTexte="étienne-pierre"
alert(MajNom("jean"))
alert(MajNom(replaceSpec(TestTexte)))
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h54   #14
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
non non, c'est joli les accents quelquefois;

(restons simples Spafy)
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h41   #15
Membre à l'essai
 
Inscription : avril 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 140
Points : 21
Points : 21
Merci beaucoup ça marche!!!
sajodia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h57   #16
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
You-Re-Welcome
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web