JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Rechercher une séquence dans un fichier texte Lun 6 Sep 2010 - 16:57 | |
| Le problème est de rechercher toutes les occurences d'une séquence donnée dans un fichier texte. Grâce à FILE_READBUF, on fait une seule lecture disque de l'intégralité du fichier dans un String, et ensuite la recherche se fait uniquement en mémoire, avec INSTR, ce qui est très rapide et très simple par rapport à des lectures disque successives et beaucoup plus compliquées. - Code:
-
' Recherche des occurences d'une séquence donnée dans un fichier TEXTE DIM f$, a$, b$, seq$, sz, x, k, noc LABEL rr, Instrx
f$ = "C:\TEXTES\Monfichier.txt": ' ***** à ajuster ******** seq$ = "Au clair de la lune": ' ******** idem ***********
FILEBIN_OPEN_READ 1, f$: sz = FILEBIN_SIZE(1): FILEBIN_CLOSE 1 FILE_OPEN_READ 1, f$: FILE_READBUF 1, a$, sz: FILE_CLOSE 1 x = 1: noc = 0 rr: GOSUB Instrx IF k > 0 PRINT "Trouvé en: " + STR$(k): noc = noc + 1 x = k + LEN(seq$): GOTO rr END_IF PRINT STR$(noc) + " occurences trouvées, recherche terminée !" END
Instrx: ' Recherche de seq$ dans a$ à partir de x -> position k b$ = a$: IF x > 1 THEN b$ = MID$(a$, x, LEN(a$)-x+1) k = INSTR(b$, seq$): IF k > 0 THEN k = x + k - 1 RETURN A partir de là, il est facile de peaufiner en cherchant soit tel quel (comme ici), soit indifféremment en majuscules/minuscules en mettant des Upper$ aux bons endroits. Ça ne marche pas pour faire la même chose avec un fichier binaire, dommage, le File_ReadBuf boucle sur le premier caractère '1A' rencontré. PS il y a déjà eu des sujets du même genre, du moins pour le s/p Instrx (exemple: https://panoramic.1fr1.net/vos-sources-vos-utilitaires-a-partager-f2/chercher-un-string-dans-un-autre-avec-un-offset-t1028.htm ), à comparer... | |
|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mar 7 Sep 2010 - 0:07 | |
| Cela ouvre la voie à des recherches à vitesse fantastique ! | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rechercher une séquence dans un fichier texte Mar 7 Sep 2010 - 18:20 | |
| Il est facile également de combiner avec le post contigü (remplacer un article dans un fichier texte) pour faire une recherche/remplacement rapide d'un élément dans une série de fichiers texte (pour un seul fichier, n'importe quel éditeur fait ça très bien !). | |
|
Contenu sponsorisé
| Sujet: Re: Rechercher une séquence dans un fichier texte | |
| |
|