IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

mettre les premiers lettres prenom composé en majuscule


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!!!

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    solution en 1 ligne :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"))

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    :red:
    Et moi je suis parti tête baissée sur un split ...

    il y a en effet plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"))

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    même pas besoin des parenthèses. (ni du second paramètre "T,L")
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    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

  7. #7
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    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.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    se sont en fait les groupes de capture de la regex

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  11. #11
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut
    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

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    excuse-moi, je n'avais pas compris que tu voulais corriger le champ lui-même;


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    on peut simplement virer les accents ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)))

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    non non, c'est joli les accents quelquefois;

    (restons simples Spafy)

  15. #15
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut
    Merci beaucoup ça marche!!!

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    You-Re-Welcome

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Mettre en majuscule les premieres lettres d'un prenom compose
    Par shaun_the_sheep dans le forum C#
    Réponses: 8
    Dernier message: 07/05/2014, 09h15
  2. Mettre en majuscule les premieres lettres d'un prenom compose
    Par rimbaut dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/04/2010, 13h55
  3. recherche sur les premières lettres
    Par mogur dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/10/2006, 09h06
  4. Rendre la premiere lettre d'un String majuscule
    Par Battosaiii dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 16h15
  5. Mettre la première lettre des mots en majuscule
    Par seb.49 dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2003, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo