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

Algorithmes et structures de données Discussion :

filtrage d'une chaine de caractéres


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut filtrage d'une chaine de caractéres
    Salut !
    Je me brule la tete depuis 3 jours sur un petit probléme et j'espere que je trouverais la soluce chez vous

    bon voila : en entrée j'ai une chaine de caracteres qui est divisée en parties delimité par disons un fanion qui est egal à "DeOn" ca veut dire que lorsque le script parcoure la chaine ,a chaque fois qu'il rencontre un fanion il decoupe et sorte une partie ,exemple :
    soit la chaine
    "parametre1DeOnparametre2DeOnparametre3DeOn" le script doit me sortir parametre 1 et 2 et 3 en clair et tous ca c'est facile a faire mais le probléme reside quand un parametre n contient la chaine "D.eOn" ou "D..eOn" ou "D...eOn" bref il cherchera une chaine qui a un certain X points entre le "D" et "eOn" ,si la chaine est trouvé le script doit soustraire un seul point de cette chaine ,exemple :
    soit le parametre n :
    "02 rueD..eOncharles jikaD....eOn08090DeOn"

    en sortie le script ne doit retenir que :
    "02 rueD.eOncharles jikaD...eOn08090"

    remarquez qu'on a soustrait un point de chaque D<..>eOn ,le delimiteur souligné "DeOn" n'est pas a prendre ,il est utilisé que pour delimiter le parametre.
    alors mon probléme c la soustraction de ce foutu point
    merci si vous avez un bon algo pour le faire

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    Ben je sais pas si j'ai bien compris !

    Mais disons que dans ta chaine tu cherche la position du premier caractere "D" de ton delimiter "D...eOn" !

    Une fois que tu trouves D tu dis :

    1) Si on a un point qui suit, tu lis caractere par caractere tant qu'il y a un point ! Une fois que tu arrive au bout de la serie de point, tu regarde 2)

    2) Soit pas (ou plus de point) tu verifies que la chaine qui suit est "eOn"


    Au final,

    Resultat 1 : si tu es passer par 1) et que 2) est vrai, tu sais que tu dois enlever un point de la chaine (facile puisque tu a la position de D) (tu supprime le caractere D+1)

    Resultat 2: si 2) vrai et que tu n'es pas passer par 1), alors c'est ton separateur, tu as la position et tu coupes !


    Je sais pas si ca reponds vraiment à ta question !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Salut
    j'ai vite lu ton post mais a priori utilises les expressions régulières de Perl. Ce langage est vraiment efficace pour ce genre d'opérations.
    Essaie de ton coté si tu n'y arrives pas je jetterai un coup d'oeil ce soir pour faire un script qui fasse ce que tu demandes.
    A bientot
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  4. #4
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    merci pour votre aide ,j'utilise le c++builder :
    je cherche la pos1 de D. et pas D ,puis je cherche la pos2 de eOn si la position d'eOn est plus grande que D. alors je construis une string de longueur pos2-pos1 composé uniquement de points (stringofchar) puis je compare ma string avec la substring(pos1,pos2) si c egal alors je n'ai que des points entre le D et eOn puis il ne reste qu'a supprimer le point de position pos1+1 et voila.
    en realité c un peut plus compliqué que ca ,en faite il faut toujours diviser la chaine en deux pour faire ca ,parceque imaginez que si on a une chaine comme si : "dqsdqsdD...eOnqdqsdqsD..eOnsd" et bien avec ma methode seulement D...eOn sera traité ,D..eOn ne sera jamais atteint parceque lorsqu'on recherche D. on trouvera toujours la premiere position et non la deuxieme ,pour ca il faut diviser la chaine et toujours faire une recherche sur la deuxieme partie qui dans une boucle se retraissi jusqu'a arriver au seul dernier caractere de la chaine.
    j'espere que j'ai bien passé le message.
    merci tout de meme 8)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [MySQL] Filtrage d'une chaine de caractères
    Par yann18 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/09/2009, 15h51
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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