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 :

Majuscule au début de chaque mot SAUF certains


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Majuscule au début de chaque mot SAUF certains
    Bonjour,

    Je cherche à mettre toutes les premières lettres d'une phrase en majuscules SAUF certains mots.
    Pour mettre les majuscules, pas de problèmes, mais comment exclure certains mots du remplacement ?

    Le but final étant de reformater des chaines d'adresses.
    Par exemple : rue des châtaigniers -> Rue des Châtaigniers
    Impasse De La feuille -> Impasse de la Feuille

    Les mots à exclure seraient donc : de, du, des, la, le, les, l', etc...

    Mais aussi de corriger certains accents évidents :
    Allee de la victoire -> Allée de la Victoire

    pour le remplacement, j'utilise ça mais est-ce qu'il y a un moyen d'utiliser un tableau (vu que j'ai une cinquantaine de mots) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var Sn = StreetName
    Sn = Sn.replace(/allee /g,CapitaliseFirstLetter("allée "));
    Sn = Sn.replace(/chaussee /g,CapitaliseFirstLetter("chaussée "));
    ...
    ...
    function CapitaliseFirstLetter(string)
    {
        return string.charAt(0).toUpperCase() + string.slice(1);
    }
    Merci d'avance de vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String.prototype.capitalize = function() {   
        var excludedWords = "de du des la le les".split(' ');
        return this.replace(/(\w+)/g, function(a) {         
            if(excludedWords.indexOf(a.toLowerCase()) >= 0){
                return a.toLowerCase(); 
            }
            return a.slice(0,1).toUpperCase() + a.slice(1);
        });
    };
     
    alert("Impasse De La feuille".capitalize());
    One Web to rule them all

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Super ça fonctionne !

    Par contre je n'arrive pas à exclure l' et d'
    J'ai essayé avec un \ devant l'apostrophe mais ça ne le prend pas en compte.

    Sinon, j'ai des soucis avec ces chaînes :
    rue de l'hôtel de ville qu'il transforme en Rue de L'HôTel de Ville
    allée de la marche qu'il transforme en AlléE de la Marche
    rue de saint-exupéry qu'il transforme en Rue de Saint-ExupéRy
    chemin de l'île qu'il transforme en Chemin de L'île
    avenue des aubépines -> Avenue des AubéPines
    avenue du général de gaulle -> Avenue du GéNéRal de Gaulle

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Il faut inclure l'apostrophe dans la regexp des mots à remplacer, ainsi que les accents. En JS les regexp n'ont pas de classes de caractères prévues pour les accents, donc il faut les mettre un par un, c'est un peu fastidieux. Voici un exemple pour que tu aies l'idée, il en manque sûrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return this.replace(/([\w'âäàéèêëîïôöùÿç]+)/gi, function(a) {
    Il y a eu plusieurs conversations intéressantes sur ce forum à propos des accents dans les regexps, par exemple celle-ci ou celle-là.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    euh... ça me fait la même chose !
    Et j'ai toujours les problèmes de majuscules en plein milieu d'un mot.

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Oui, je me suis rendu compte que je n'avais répondu qu'à la moitié de la question ; j'ai édité mon post précédent.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Premiere lettre de chaque mot en Majuscule
    Par dadouuuu dans le forum Débuter
    Réponses: 10
    Dernier message: 20/05/2009, 17h48
  2. Réponses: 10
    Dernier message: 15/10/2008, 11h21
  3. Premiere lettre de chaque mot en majuscule
    Par lili2704 dans le forum Langage
    Réponses: 4
    Dernier message: 13/06/2007, 14h51
  4. [RegEx] Mettre des majuscules au début de chaque mot
    Par Guilhem_mdg dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2007, 10h33
  5. 1ère lettre en majuscule sauf certains mots !!!
    Par beletteroi dans le forum Access
    Réponses: 1
    Dernier message: 11/10/2005, 08h52

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