............

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

............

Message par Backup »

.......................
Dernière modification par Backup le ven. 07/oct./2011 12:17, modifié 2 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Progi1984 »

Et avec les expressions régulières ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Backup »

je viens de Réediter mon code ci dessus (correction d'un petit bug)

les expressions régulieres ?

oui peut etre , je sais pas m'en servir :)
du reste mon code permet de tenir compte de 2 balises differentes

avec les expressions reguliere ?? .. ben je sais pas
je ne sais vraiment pas me srvir de ce truc, qui m'a l'air rébarbatif :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Backup »

...........................
Dernière modification par Backup le sam. 19/mars/2011 16:38, modifié 1 fois.
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Geo Trouvpatou »

Merci à toi.
C'est mis dans le même dossier que Dobro_replace :wink:

J'avais fais ça (Voir le tout dernier code), mais c'était pour une conversion spécifique.

J'ai d'ailleurs tester ton code avec mon exemple et ça fonctionne aussi.
A la rigueur, il n'y aurait plus qu'à faire les chercher/remplacer à la volée.

Code : Tout sélectionner

Procedure.S Extract(phrase.S,balise_gauche.S,balise_droite.S,longueur)
         ; by Dobro
         ; retourne l'extrait de chaine compris entre 2 balises
         ; les balises sont 1 caractere ou un mot.....
         ; utile pour extraire les infos d'une page web par exemple
         ; le parametre longueur , sert a determiner l'eccart entre 2 balises
         ; et de savoir si l'on recupere l'extrait si les balises sont trop éloigné
         ; si "dobro_stop" est renvoyé , fin de l'exploration du text$
         Static pointeur_debut
         Static pointeur_fin
        pointeur_debut= FindString (phrase.S,balise_gauche.S,pointeur_debut)+ Len (balise_gauche.S)
        pointeur_fin= FindString (phrase.S,balise_droite.S,pointeur_debut)
        
         If (pointeur_debut- Len (balise_gauche.S))=0 Or pointeur_fin=0
                extrait$= "dobro_stop" ; signale la fin du traitement
                pointeur_debut=0
                pointeur_fin=0
                 ProcedureReturn extrait$
         EndIf
        
        long=pointeur_fin-pointeur_debut
        extrait$= Mid (phrase.S,pointeur_debut,long)
        
         If Len (extrait$)<longueur
                pointeur_debut=pointeur_fin
                 ProcedureReturn extrait$
         Else
                extrait$= ""
                 ProcedureReturn extrait$
         EndIf
EndProcedure


text$= "un peu de texte [color=#000000]pour [color=#111111]tester[/color] et du [b]texte[b] collé[color=Green]en mettant Green[/color] [color=#FFFFFF]encore du bla bla[/color]"
Repeat
        retour$= Extract(text$, "[color=" , "]" ,20)
         If retour$<> "dobro_stop" ; on n'affiche pas le message de fin de traitement²
                 Debug retour$
         EndIf
        
Until retour$= "dobro_stop"
;CallDebugger
Bye.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Backup »

.....................
Dernière modification par Backup le sam. 19/mars/2011 16:38, modifié 1 fois.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Fig »

Merci, très utile et adaptable à toute situation :!: 8)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Backup »

content que ça serve :)
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Geo Trouvpatou »

Dobro a écrit :a ce propos hier soir, j'ai révisé cette procedure , en y corrigeant un petit bug
Tu aurais dû dire transformé à la place de révisé, parce que la façon de faire est totalement différente.
Sur ce, j'ai pris cette nouvelle procédure.

Merci.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Extract(phrase.S,balise_gauche.S,balise_droite.S,longueu

Message par Backup »

Geo Trouvpatou a écrit :Tu aurais dû dire transformé à la place de révisé, parce que la façon de faire est totalement différente.
Sur ce, j'ai pris cette nouvelle procédure.

Merci.
non :)
il y a 2 procedures dans ce topic

Extract() qui sert a extraire une portion de caracteres coincé entre 2 "Balises"
et
Dobro_Replace2() qui sert a remplacer une expression par une autre
sans toutefois remplacer aveuglement , elle tiens compte de ne pas remplacer
l'expression , si celle-ci se trouve dans un mot

ex Leon est l'expression a remplacer par Pierre

mais pour le mot Leonidas ça n'y touchera pas :)

c'est de cette 2em procedure que je parlais, lorsque j'ai dis que j'avais corrigé un bug :)
Répondre