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 :

to UpperCase "partiel"


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut to UpperCase "partiel"
    Bonjour,

    Ce code permet de mettre en majuscule une chaine du style "Nom-Prénom" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var chaine="bouvier Jacques";
    alert(chaine.toUpperCase());
    cela donne "BOUVIER JACQUES".

    Je souhaiterais en fait ne mettre en majuscule que le 1er mot (en l'occurrence le Nom), le 2nd mot (le prénom) devant rester en minuscule :

    "BOUVIER Jacques"

    A priori il faudrait détecter l'espace séparant le nom du prénom. Mais je ne vois pas comment faire pour arriver au résultat escompté. Pouvez-vous m'aider? Merci.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var chaine="bouvier Jacques";
    chaine = chaine.split(' ');
    chaine[0] = chaine[0].toUpperCase();
    chaine = chaine.join(' ');
    alert(chaine);

    edit: avec une regex (ce qui n'est pas du tout mon fort) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var chaine="bouvier Jacques";
    alert(chaine.replace(/^(\w*)\b/,function(a){return a.toUpperCase();}));

  3. #3
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Attention Willpower, il faut prendre le dernier espace, pas le premier.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    Merci à Willpower, le 1er code fonctionne (je n'ai pas essayé le 2nd)

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Je ne suis pas d'accord. Comme je le signalais, les noms de familles en plusieurs parties sont monnaies courantes. Essayer de faire cela avec le nom "Van Der Biest Jacques" et vous n'aurez que le "VAN" en majuscules.

    Si vous continuez sur le premier code, il faut boucler sur le nombre d'éléments dans le tableau du split et les mettre en majuscules à l'exception du dernier.

  6. #6
    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
    Les versions adaptées à l'interprétation de Vermine (seul le dernier mot n'est pas mis en majuscule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var chaine="bouvier henri Jacques";
    var array = chaine.split(' ');
    var nom = array.slice(0,array.length-1).join(' ').toUpperCase();
    chaine = nom+' '+array[array.length-1];
    alert(chaine);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var chaine="bouvier henri Jacques";
    alert(chaine.replace(/^(.*)\b(\w+)$/,function($,$1,$2){return $1.toUpperCase()+$2;}));
    (il existe peut-être mieux niveau regex, vu que ce n'est pas du tout mon fort)

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

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