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

Langage Perl Discussion :

[langage] supprimer un # avec un . comme marqueur


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [langage] supprimer un # avec un . comme marqueur
    Salut à tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $prefixe = "\."
     
    print " AVANT: $_ \n";
    $_=~s/#$prefixe/$prefixe/g;
    print " APRES: $_ \n";
    Resultat de l'execution:
    AVANT: #.js # JScript file
    APRES: .js .JScript file
    Le premier dieze est enlevé, BIEN
    Le deuxieme dieze est enlevé aussi , PAS BIEN
    Le point est considéré comme un caractère quelconque, et non pas comme un point.
    Merci d'avance si quelqu'un voit la solution à mon problème

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    bon j'avais poste un truc faux

    j'enleve et je regarde pour la solution correcte

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu devrais aller voir un topic un peu plus bas où il y a presque le même problème... Vous faites tous les deux la même erreur (même si dans son cas, c'est moins flagrant), vos caractère sont "interprétés" deux fois, une fois en tant que string, puis en tant que regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $prefixe = "\." ;
    print $prefixe; # ça donne "."
    Avec les doubles quotes, les séquences d'échappement incorrecte, sont remplacé par le caractère qui suit l'antislash.
    Donc soit tu utilises '\.' qui va marcher, soit tu fait "\\." .

    (Remarque que là tu va te retrouver avec "\." dans ton résultat parce que la chaîne de remplacement n'est pas réinterprétée...)
    La vraie solution est d'utiliser quotemeta, ou son équivalent avec séquence d'échappement, ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $prefixe = "."
     
    print " AVANT: $_ \n";
    $_=~s/#\Q$prefixe\E/$prefixe/g;
    print " APRES: $_ \n";
    --
    Jedaï

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    ca marche avec ca;
    mais je n'utilise pas $prefixe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print " AVANT: $test \n";
    $test=~s/#?(.+)/$1/;
    print " APRES: $test \n"

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci, à vous deux, je vais essayer la premiere solution, parce que j'ai besoin de garder la variable $prefixe, mais j'essaierai quand même la deuxieme solution.

    Une fois que j'aurai testé je mettrai le tag resolu

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    ok

    mais si tu cherches juste a supprimer le premier diese, je ne vois pas a quoi sert la variable $prefixe

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    salut fsapet

    C'est à l'interieur d'une fonction que se trouve ce bout de code.
    Il se trouve qu'elle ne fonctionnait pas avec le point, mais $prefixe pourra avoir d'autres valeurs.

    En tout cas merci

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

Discussions similaires

  1. [langage] Supprimer un élément dans une liste
    Par myjuna dans le forum Langage
    Réponses: 15
    Dernier message: 06/08/2014, 11h49
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. Réponses: 4
    Dernier message: 10/08/2004, 11h59
  4. [langage] supprimer le premier élément d'un tableau
    Par Kinethe dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2004, 15h39
  5. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52

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