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 :

Remplacer une sous chaîne par une autre


Sujet :

JavaScript

  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut Remplacer une sous chaîne par une autre
    Bonjour à tous.
    Actuellement j'ai une chaine (provenant d'un fichier DOS) qui ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Compressing  MySQL Datafiles\totalsens\customerssitesacquisitors.frm
    Compressing  MySQL Datafiles\totalsens\customerssitesacquisitors.ibd
    WARNINGS: The process cannot access the file because it is being used by another process.
     
    WARNINGSS for files:
    d:\CopyLocalLog.txt : The process cannot access the file because it is being used by another process.
     
    !This is a Warning!
    J'aimerais changer toutes les lignes où on retrouve le mot WARNING par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span style=\"background-color :red;\">...</span>
    Donc mon fichier actuel devrait avoir l'air de ceci à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Compressing  MySQL Datafiles\totalsens\customerssitesacquisitors.frm
    Compressing  MySQL Datafiles\totalsens\customerssitesacquisitors.ibd
    <span style=\"background-color :red;\">WARNINGS: The process cannot access the file because it is being used by another process.</span>
     
    <span style=\"background-color :red;\">WARNINGSS for files:</span>
    d:\CopyLocalLog.txt : The process cannot access the file because it is being used by another process.
     
    <span style=\"background-color :red;\">!This is a Warning!</span>
    Je ne suis pas très habitué avec les RegEx mais j'ai toutefois commencé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var text = ReadFile( "TestReplace.txt" );
    text = text.replace( /.*WARNINGS.*\r\n/g, "<span style=\"background-color :red; color :white; font-weight :bold;\">???</span>" );
    Merci pour votre aide

  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
    tu as déja un souci d'imbrication ou d'échappement de quotes dasn le regExp ...

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Citation Envoyé par SpaceFrog
    tu as déja un souci d'imbrication ou d'échappement de quotes dasn le regExp ...
    Bonjour,

    Quel est mon soucis d'imbrication ? C'est que je ne m'y connais pas du tout en RegEx. Je n'arrive même pas à comprendre ce que je dois écrire pour réaliser mon remplacement.

  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 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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text = text.replace( /.*WARNINGS.*\r\n/g, expression );
    expression étant ce que tu souhaite mettre à la place ...

    essaye avec "bbbbb" tu verras déja si ça marche ?

  5. #5
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Bonjour,

    Mais ce n'est pas exactement ce que j'ai en haut (dans mon premier post ) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var text = ReadFile( "TestReplace.txt" );
    text = text.replace( /.*WARNINGS.*\r\n/g, "<span style=\"background-color :red; color :white; font-weight :bold;\">???</span>" );
    Avec ceci il remplace QUE le MOT WARNINGS par par ce que je veux. Tandis que moi je cherche à remplacer soit le mot WARNING ou WARNINGS et tout ce qui suit sur la même ligne.

    Prenons une ligne de mon fichier :
    WARNING you have some error ...

    Une fois le remplacement terminé je devrais avoir ceci :
    <span style="background-color :red; color :white; font-weight :bold;">WARNING you have some error ...</span>

    Merci

  6. #6
    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
    bonsoit,

    ce n'est pas la panacée, mais ça marche :
    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
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function mesWarning()
    {
      var msg = "Compressing  MySQL Datafiles\\totalsens\\customerssitesacquisitors.frm\n";
      msg+="Compressing  MySQL Datafiles\\totalsens\\customerssitesacquisitors.ibd\n"
      msg+="WARNINGS: The process cannot access the file because it is being used by another process.\n";
      msg+="WARNINGSS for files:\n"
      msg+="d:\CopyLocalLog.txt : The process cannot access the file because it is being used by another process.\n"
      msg+="!This is a Warning!\n";
     
      //************************************************
     
      //var msg = ReadFile( "TestReplace.txt" );
      var tabMsg = new Array();
      var i, lg, exp;
     
      tabMsg = msg.split("\n");
      lg = tabMsg.length;
     
      exp = new RegExp("warning","gi");
      msg = "";
     
      for (i=0;i<lg;i++)
      {
          if (tabMsg[i].search(exp)>=0)
             tabMsg[i] = "<span style='background-color:#F00; color:#FFF; font-weight:bold;'>"+tabMsg[i]+"</span>";
          msg+=tabMsg[i]+"<br>";
      }
     
      document.getElementById("out1").innerHTML = msg;
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="mesWarning()">
     
    <div id="out1">&nbsp;</div>
     
    </body>
     
    </html>
    je considère que tes lignes se terminent par un \n. A partir de là je les séparent (split) et je les mets dans un tableau. Je traite alors chaque ligne séparément, puis je reconstruis le message.

  7. #7
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Merci beaucoup

    Exactement ce que je voulais !!!
    Je croyais que c'étais réalisable qu'en une ligne avec des RegEx mais cette solution me convient parfaitement.

  8. #8
    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
    alors ?

  9. #9
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Voici un exemple pour la regExp : à essayer

  10. #10
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Citation Envoyé par FremyCompany
    Voici un exemple pour la regExp : à essayer
    Bonjour

    Toutefois avec ceci, qu'est-ce qui remettera la partie entre les deux SPAN ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <span style=....>WARNINGS....</span>

  11. #11
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine.replace(/WARNING[^\n]*/g, "<span style='color: red; font-weight: bold'>$1</span>");

  12. #12
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Wow
    Merci à tous pour votre aide.
    C'est grandement apprécié.

  13. #13
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Eh oui c'est encore moi LoL

    J'aimerais savoir maintenant comment retirer les lignes vides.
    Donc voici mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    blablabblabla...
    blablabblabla...
     
     
    blablabblabla...
    blablabblabla...
    blablabblabla...
     
    blablabblabla...
    blablabblabla...
    Ce qui devrait devenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    blablabblabla...
    blablabblabla...
    blablabblabla...
    blablabblabla...
    blablabblabla...
    blablabblabla...
    blablabblabla...
    Merci

  14. #14
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine.replace(new RegExp("(\\u10|\\u13)","")
    ?

  15. #15
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Citation Envoyé par FremyCompany
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileText = fileText.replace( /\\u10|\\u13/,"");
    ?
    Ceci remplace les chaînes vides par des petits caractères carrés non lisible lorsqu'on ré-ouvre le fichier avec UltraEdit ou Nodepad par exemple. Et non un retrait total de l'espace.

  16. #16
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par Erakis
    Ceci remplace les chaînes vides par des petits caractères carrés non lisible lorsqu'on ré-ouvre le fichier avec UltraEdit ou Nodepad par exemple. Et non un retrait total de l'espace.
    Attention !
    new RegExp("\\u10","g") ce n'est pas pareil à /\\u10/ mais bien à /\u10/

    De toute façon, je crois que ca ne marchera pas comme ca, vu que cela va remplacer tout les sauts de lignes...

    Essaie cela pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var jsCr=String.fromCharCode(13);
    var jsLf=String.fromCharCode(10);
    // différentes possibilités de saut de ligne : CrLf (conventionnel) ou Lf
    var jsNewLine="("+jsCr+jsLf+"|"+jsLf+")";
    // Deux ou plus sauts de ligne
    var multiLines=jsNewLine+"{2}"+jsNewLine+"*";
    // Crée l'expression régulière :
    var reg=new RegExp(multiLines,"g");
    // Procède au remplacement
    textFile.replace(reg, "");

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

Discussions similaires

  1. [RegEx] chaine ne commencant pas par une sous-chaîne
    Par Darkolive dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2008, 09h05
  2. [RegEx] Sous-chaîne dans une sous-chaîne : optimisation RegExp
    Par mathieugamin dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2007, 08h44
  3. Remplacer une sous-requête par une jointure
    Par MPQuatre dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/12/2007, 17h28
  4. Réponses: 7
    Dernier message: 03/10/2007, 17h58
  5. Réponses: 3
    Dernier message: 05/01/2007, 15h50

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