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 confirmé
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    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 Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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"))
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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"))
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  7. #7
    Membre Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    se sont en fait les groupes de capture de la regex
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    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 684
    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 684
    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 confirmé
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    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 684
    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 684
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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)))
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    non non, c'est joli les accents quelquefois;

    (restons simples Spafy)

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    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 684
    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 684
    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