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 :

Fonction replace & search


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Fonction replace & search
    Bonjour à tous !

    Je dois inclure dynamiquement du contenu CSS dans ma page, mais avant cela, je dois remplacer dans ce contenu toute chaîne "[PATH]" par une variable de mon choix (sachant que cette chaîne est présente plusieurs fois dans ce code).
    J'utilise donc ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (str.search('[PATH]') != -1)
    {
         str.replace('[PATH]', ma_variable);
    }
    Or la boucle est infinie, alors que je n'ai que deux [PATH] dans ma variable str. J'aimerai vraiment comprendre pourquoi cela ne marche pas.

    Pourriez-vous m'aider ?

    Cordialement,
    Loïs

  2. #2
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    c'est normal :
    tu demande de faire tant que on trouve pas [PATH]
    mais si tu [PATH] alors tu le modifie .....
    donc en fait ta condition de ne pas trouver PATH sera toujours valide ....
    il faut que tu mettes un autres cas d'arret dans la boucle
    ex : tant que je suis pas a la fin de ma chaine ........

    ou alors tu fais simplement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str.replaceAll('[PATH]', ma_variable);
    sans boucle tu aura tout tes PATH remplacer ....

    ++

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    pas besoin de boucle. La fonction replace utilise les expressions régulières :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      var str = "bla bla [PATH] bla bla bla bla [PATH] bla [PATH] [PATH] bla bla";
      var ma_variable = "TADAAAAAA";
     
      str = str.replace(/(\[PATH\])/g, ma_variable);
     
      alert(str);

  4. #4
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Je n'ai rien dit ! Ca marche, j'avais oublié le "str =" avant ma fonction. Merci beaucoup pour votre aide !

    ---------------------------------------

    @laurentibus : Je ne connaissais pas la fonction replaceAll, et pour cause, Firefox ne semble pas la reconnaître:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur*: str.replaceAll is not a function
    Fichier Source*: http://localhost/includes/javascript/window.js
    Ligne*: 142
    Cela étant, je ne vois pas où se trouve le problème dans ma fonction, il y a deux fois [PATH], donc str.search('[PATH]') doit retourner autre chose que -1. Ici je demande "tant que ça me retourne autre chose que -1", autrement dit: "tant qu'il reste [PATH] dans la variable str". Javascript vérifie bien la condition à chaque fois, n'est-ce pas ?

    @Auteur : Le code suivant n'a pas fonctionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str.replace(/(\[PATH\])/g, path);
    Je précise qu'avec str.replace('[PATH]', path), ça remplace le premier [PATH], mais pas le deuxième.
    Je précise également, que je récupère mon str via via la lecture d'un fichier CSS, et qu'il y a donc plusieurs lignes. En ajoutant "m" en option, j'ai toujours le même résultat :S

    Une idée ?

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      var str = "bla bla [PATH] bla bla bla \nbla\n [PATH] bla [PATH] [PATH] \nbla bla";
      var ma_variable = "TADAAAAAA";
     
      str = str.replace(/\n/g, "");
      str = str.replace(/(\[PATH\])/g, ma_variable);
     
      alert(str);
    J'ai ajouté des sauts de ligne dans le texte (\n). Je les supprime avant d'appliquer l'expression régulière.
    Le commutateur m (multi-lignes) n'est pas toujours pris en compte

  6. #6
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    oula faut que j arrête de dormir ....... ou alors dormir la nuit serait mieux ......


    et oui sinon auteur a raison tu peux utiliser replace avec une expression régulière ce qui enlèvera toutes les occurrences

    ++

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

Discussions similaires

  1. [ODBC] Fonction Replace en ODBC
    Par Alexandre T dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2007, 11h02
  2. Fonction replace
    Par mpat dans le forum ASP
    Réponses: 2
    Dernier message: 30/08/2005, 09h59
  3. Fonction replace
    Par pmboutteau dans le forum ASP
    Réponses: 11
    Dernier message: 10/06/2005, 09h42
  4. PB avec la fonction replace
    Par Techman128 dans le forum C++
    Réponses: 6
    Dernier message: 24/02/2005, 11h39
  5. Fonction replace
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 10/06/2004, 12h18

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