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 :

Optimisation de plusieurs replace


Sujet :

JavaScript

  1. #1
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut Optimisation de plusieurs replace
    Bonjour à tous,

    Ci dessous un bout de code qui me permet de gérer l'affichage de caractères accentués (un replace en équivalent octal).

    Cà fonctionne mais 2 questions...
    Est-il possible d'optimiser la chose ?
    JShint me sort un warning par ligne avec l'erreur "vous avec un \ mal placé", même constat si je passe en mode strict. Comment faire pour corriger ce point ?

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
             var d = "il était une fois" ; 
             d = d.replace("¢", "\242");
             d = d.replace("£", "\243");
             d = d.replace("€", "\244");
             d = d.replace("¥", "\245");
             d = d.replace("°", "\260");
             d = d.replace("¼", "\274");
             d = d.replace("Œ", "\274");
             d = d.replace("½", "\275");
             d = d.replace("œ", "\275");
             d = d.replace("¾", "\276");
             d = d.replace("Ÿ", "\276");
             d = d.replace("¡", "\241");
             d = d.replace("«", "\253");
             d = d.replace("»", "\273");
             d = d.replace("¿", "\277");
             d = d.replace("À", "\300");
             d = d.replace("Á", "\301");
             d = d.replace("Â", "\302");
             d = d.replace("Ã", "\303");
             d = d.replace("Ä", "\304");
             d = d.replace("Å", "\305");
             d = d.replace("Æ", "\306");
             d = d.replace("Ç", "\307");
             d = d.replace("È", "\310");
             d = d.replace("É", "\311");
             d = d.replace("Ê", "\312");
             d = d.replace("Ë", "\313");
             d = d.replace("Ì", "\314");
             d = d.replace("Í", "\315");
             d = d.replace("Î", "\316");
             d = d.replace("Ï", "\317");
             d = d.replace("Ð", "\320");
             d = d.replace("Ñ", "\321");
             d = d.replace("Ò", "\322");
             d = d.replace("Ó", "\323");
             d = d.replace("Ô", "\324");
             d = d.replace("Õ", "\325");
             d = d.replace("Ö", "\326");
             d = d.replace("Ø", "\330");
             d = d.replace("Ù", "\331");
             d = d.replace("Ú", "\332");
             d = d.replace("Û", "\333");
             d = d.replace("Ü", "\334");
             d = d.replace("Ý", "\335");
             d = d.replace("Þ", "\336");
             d = d.replace("ß", "\337");
             d = d.replace("à", "\340");
             d = d.replace("á", "\341");
             d = d.replace("â", "\342");
             d = d.replace("ã", "\343");
             d = d.replace("ä", "\344");
             d = d.replace("å", "\345");
             d = d.replace("æ", "\346");
             d = d.replace("ç", "\347");
             d = d.replace("è", "\350");
             d = d.replace("é", "\351");
             d = d.replace("ê", "\352");
             d = d.replace("ë", "\353");
             d = d.replace("ì", "\354");
             d = d.replace("í", "\355");
             d = d.replace("î", "\356");
             d = d.replace("ï", "\357");
             d = d.replace("ð", "\360");
             d = d.replace("ñ", "\361");
             d = d.replace("ò", "\362");
             d = d.replace("ó", "\363");
             d = d.replace("ô", "\364");
             d = d.replace("õ", "\365");
             d = d.replace("ö", "\366");
             d = d.replace("ø", "\370");
             d = d.replace("ù", "\371");
             d = d.replace("ú", "\372");
             d = d.replace("û", "\373");
             d = d.replace("ü", "\374");
             d = d.replace("ý", "\375");
             d = d.replace("þ", "\376");
             d = d.replace("ÿ", "\377");
    Merci beaucoup !

  2. #2
    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
    Il y a déja eu un sujet à ce propos,
    http://www.developpez.net/forums/d11...js-navigateur/
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <script type="text/javascript">
    var rules = {
    	"\242":"¢" ,
           "\243": "£",
           "\244": "€",
           "\245": "¥",
           "\260": "°",
           "\274": "¼",
           "\274": "Œ",
           "\275": "½",
           "\275": "œ",
           "\276": "¾",
           "\276": "Ÿ",
           "\241": "¡",
           "\253": "«",
           "\273": "»",
           "\277": "¿",
           "\300": "À",
           "\301": "Á",
           "\302": "Â",
           "\303": "Ã",
           "\304": "Ä",
           "\305": "Å",
           "\306": "Æ",
           "\307": "Ç",
           "\310": "È",
           "\311": "É",
           "\312": "Ê",
           "\313": "Ë",
           "\314": "Ì",
           "\315": "Í",
           "\316": "Î",
           "\317": "Ï",
           "\320": "Ð",
           "\321": "Ñ",
           "\322": "Ò",
           "\323": "Ó",
           "\324": "Ô",
           "\325": "Õ",
           "\326": "Ö",
           "\330": "Ø",
           "\331": "Ù",
           "\332": "Ú",
           "\333": "Û",
           "\334": "Ü",
           "\335": "Ý",
           "\336": "Þ",
           "\337": "ß",
           "\340": "à",
           "\341": "á",
           "\342": "â",
           "\343": "ã",
           "\344": "ä",
           "\345": "å",
           "\346": "æ",
           "\347": "ç",
           "\350": "è",
           "\351": "é",
           "\352": "ê",
           "\353": "ë",
           "\354": "ì",
           "\355": "í",
           "\356": "î",
           "\357": "ï",
           "\360": "ð",
           "\361": "ñ",
           "\362": "ò",
           "\363": "ó",
           "\364": "ô",
           "\365": "õ",
           "\366": "ö",
           "\370": "ø",
           "\371": "ù",
           "\372": "ú",
           "\373": "û",
           "\374": "ü",
           "\375": "ý",
           "\376": "þ",
           "\377": "ÿ"
    	}; 
     
     function  getJsonKey(key){
     	for (acc in rules){
     		if (rules[acc].indexOf(key)>-1){return acc}
     	}
     }
     
    function replaceSpec(Texte){
    	regstring=""
    	for (acc in rules){
     		regstring+=rules[acc]
     	}
     
    	reg=new RegExp("["+regstring+"]","g" )
    	return Texte.replace(reg,function(t){ return getJsonKey(t) });
    }
     
    //Utilisation : 		   
    var TestTexte= "il était une fois"
    alert(replaceSpec(TestTexte));
     
    </script>

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    escape(d) ou encodeURI(d) ne seraient pas des alternatives valables ?

  4. #4
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    @SpaceFrog : au final çà fait plus de code

    @Bovino : en fait c'est pour afficher des messages dans une form jquery "Vous souhaitez supprimer l'évènement ?". Donc la solution du escape marche pas.

    manu

  5. #5
    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
    plus de code ...
    plus de lignes...

    et plus de code ne veut pas dire moins performant ni moins gourmand

  6. #6
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    On est d'accord tu penses que la fonction par regex est plus rapide que les replace (sans vouloir lancer de débat ou troll !)

    Manu

  7. #7
    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
    ça reste du replace ...

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

Discussions similaires

  1. optimisation avec plusieurs courbes
    Par doudy22 dans le forum MATLAB
    Réponses: 9
    Dernier message: 25/10/2010, 12h24
  2. Optimisation de plusieurs requêtes en une seule ?
    Par Christophe Charron dans le forum Requêtes
    Réponses: 0
    Dernier message: 24/10/2009, 12h42
  3. [Requête SQL] Optimisation de plusieurs UPDATE SET FROM
    Par dens19 dans le forum Développement
    Réponses: 6
    Dernier message: 13/03/2009, 16h51
  4. Optimisation SQL, plusieurs WHERE, ordre de tri
    Par dynexd dans le forum Requêtes
    Réponses: 22
    Dernier message: 29/09/2008, 20h21
  5. Optimisation Concaténation vs Replace
    Par Samish dans le forum ASP
    Réponses: 1
    Dernier message: 24/08/2006, 19h47

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