♪ Il peut être utile de découper un texte en mots, notamment pour créer un index.
Voici une méthode qui vous permet de faire ce découpage suivant un motif précis. Pour cela, nous utiliserons une RegEx (ou plus communément appelée expression régulière). Ces expressions sont utilisées pour parcourir de façon automatique des textes à la recherche de certains ensembles de caractères.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
` cette méthode s'appuie sur l'utilisation d'un plug-in freeware "Qfree"(*)
` à télécharger et installer dans le dossier "Win4DX" ou "Mac4DX"
C_TEXTE
(
$1
)
`texte à découper
C_ENTIER LONG
(
$nb_mot
;
$ii
;
$err
)
C_BLOB
(
$blob_target
)
C_ENTIER LONG
(
$offset
)
`Initialisation des tableaux nécessaires à la commande Qfree
TABLEAU ENTIER LONG
(
$_offset
;
0
)
TABLEAU ENTIER LONG
(
$_longueur
;
0
)
`Motif de découpage suivant le principe des expressions régulières.
$patern
:=
"
\\
W+(
\\
w*)
\\
W*"
`Transformation du texte en BLOB (QFree travaille avec des blobs)
TEXTE VERS BLOB
(
$1
;
$blob_target
;
Texte sans longueur )
$flags
:=
0
`Utilisation de la fontion QF_Resplit de QFree qui, à partir d'un blob et d'un motif,
`retourne la position de départ de chaque motif et leur longueur correspondante dans les tableaux.
$err
:=
QF_Resplit (
$patern
;
$blob_target
;
$_offset
;
$_longueur
;
$flags
)
Si
(
$err
=
0
)
$nb_mot
:=
Taille tableau
(
$_offset
)
`Transfert des mots trouvés selon le motif dans un tableau
TABLEAU TEXTE
(
_mot;
$nb_mot
)
Boucle
(
$ii
;
1
;
$nb_mot
)
$offset
:=
$_offset
{$ii
}
Si
(
$offset
>=
0
)
_mot{$ii
}:=
BLOB vers texte
(
$blob_target
;
Texte sans longueur;
$offset
;
$_longueur
{$ii
})
Fin de si
Fin de boucle
_mot:=
0
Sinon
TABLEAU TEXTE
(
_mot;
0
)
Fin de si
(*) QFree :
Vous trouverez plus d'informations sur Qfree sur le site de son éditeur Escape : http://www.escape.gr/q/index.html
Et vous pouvez le télécharger à cette adresse : http://www.escape.gr/q/q_download.html