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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    tu as déja un souci d'imbrication ou d'échappement de quotes dasn le regExp ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    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 ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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 confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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 confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    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
    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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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
    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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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
    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 : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    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
    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