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 :

différence entre 2 string presque identique


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut différence entre 2 string presque identique
    Bonjour

    je suis entrain d'ecrire une fonction qui fais la chose suivante:

    $chaineA = AB_CD
    $chaineB = ABCD

    la fonction dois dire que chaineA est la meme que chaineB

    en regexp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($chainB =~ /$chaineA|AB_CD)
    je ne trouve pas que cela est professionnel

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ton expression régulière ne fait pas ce que tu dis.
    D'ailleurs, on ne sait pas très bien ce que tu veux faire : est-ce que tu veux considérer que les espaces sont "non significatifs" dans la comparaison de chaine ?
    Si c'est le cas, il convient alors de copier les chaines "sans les espaces" et ensuite, de les comparer avec l'opérateur eq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my $chaineA_cmp = $chaineA =~ s/\s+//g;
    my $chaineB_cmp = $chaineB =~ s/\s+//g;
    if ($chaineA_cmp eq $chaineB_cmp) {
      # ...
    }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Ton expression régulière ne fait pas ce que tu dis.
    D'ailleurs, on ne sait pas très bien ce que tu veux faire : est-ce que tu veux considérer que les espaces sont "non significatifs" dans la comparaison de chaine ?
    Si c'est le cas, il convient alors de copier les chaines "sans les espaces" et ensuite, de les comparer avec l'opérateur eq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my $chaineA_cmp = $chaineA =~ s/\s+//g;
    my $chaineB_cmp = $chaineB =~ s/\s+//g;
    if ($chaineA_cmp eq $chaineB_cmp) {
      # ...
    }
    ce n'est pas un espace c'est un "_" mais ton idée est bonne je n'ai pas pensé
    je teste et je poste le code

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il te suffit alors de remplacer \s par _

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Il te suffit alors de remplacer \s par _
    Oui c'est ce que j'ai fais et je trouve la maniere de faire est plus professionnel


  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    La solution de Philou est plus professionnelle et, surtout, elle marche. Ton expression régulière ne faisait pas cela.

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

Discussions similaires

  1. Différence entre 2 strings
    Par lokomass dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 04/02/2015, 18h45
  2. [XL-2007] Fonction pour connaitre les différences entre 2 strings
    Par CaraLePoke dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/02/2013, 20h09
  3. différence entre <string.h> et <string>
    Par mister3957 dans le forum C++
    Réponses: 3
    Dernier message: 20/03/2006, 19h33
  4. Différence entre un String et un string ?
    Par pepito62 dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/03/2005, 15h11

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