III. Les tokens▲
III-A. Définition▲
Un Token (ou jeton) est un ensemble de caractères (pas forcément un mot).
Pour parler de Tokens, on parle avant tout de séparateur (un caractère ASCII) qui sépare un ensemble de caractères en plusieurs sous-ensembles (tokens).
Exemple
Soit la ligne suivante :
123;abc:xy:z;2006
Si on prend le point-virgule comme séparateur :
123;abc:xy:z;2006
Notre premier Token sera 123, le deuxième abc:xy:z et le troisième 2006 Alors que si on prend les deux-points comme séparateur, le premier Token sera 123;abc, le deuxième xy et le troisième z;2006.
Une application simple des Tokens pourrait être un script qui isole le jour, mois et année d'une date.
Bien sûr mIRC offre une multitude de fonctions pour gérer les Tokens, c'est ce qu'on va voir dans ce chapitre.
III-B. Fonctions de traitement des tokens▲
III-B-1. $gettok(texte,N1-N2,S)▲
Cette fonction permet de chercher un token dans une chaîne de caractères.
- texte - texte contenant les tokens.
- N1-N2 - N1 étant la position du token dans le texte (N2 optionnel servant à définir un intervalle ex. : 3-5).
- S - la valeur ASCII du caractère séparateur.
Exemple :
$gettok(1;2;3,2,59) retourne 2
$gettok(a.b.c.d,3-,46) retourne c.d
$gettok(a.b.c.d,5,46) retourne $null
$gettok(1.2.3.4,-2,46) retourne 3
- Une valeur négative de N1 retourne la position du Token en partant de la fin.
- Les séparateurs au début et à la fin d'une chaine de caractères sont tout simplement omis.
- Si un séparateur est en double (;;) il est tout considéré comme un seul séparateur (;).
- Si vous utilisez comme séparateur un caractère non existant dans la chaîne, $gettok(texte,1,S) retournera toujours texte.
- $gettok(texte,0,S) retourne le nombre de tokens trouvés dans la chaîne ce qui peut être interessant pour parcourir celle-ci et afficher les tokens un par un.
III-B-2. $findtok(texte,token,N,S)▲
Cette fonction retourne la position du token donné en paramètre.
- texte - texte contenant les tokens.
- token- token recherché.
- N- N est le Nième token trouvé dans la chaîne (N = 0 retourne le nombre total trouvé).
- S- la valeur ASCII du caractère séparateur.
Exemple :
$findtok(1;2;3,x,1,59) retourne $null
$findtok(a.b.c.d,c,1,46) retourne 3
$findtok(a.b.c.c.d.c,c,2,46) retourne 4
III-B-3. $addtok(texte,token,S)▲
Cette fonction ajoute un token à la liste des tokens s'il n'y est pas déjà , il retourne le texte avec le token ajouté si l'opération a eu lieu.
- texte - texte contenant les tokens.
- token- token à ajouter.
- S- la valeur ASCII du caractère séparateur.
Exemple :
$addtok(1;2,3,59) retourne 1;2;3
$addtok(a.b.c,c,46) retourne a.b.c
$addtok(a.b.c,f,59) retourne a.b.c;f
III-B-4. $deltok(texte,N-N1,S)▲
Cette fonction efface le token dont la position est N et retourne le texte modifié.
- texte - texte contenant les tokens.
- N-N1- N étant le numéro du token dans le texte (N1 optionnel servant à définir un intervalle ex. : 3-5).
- S- la valeur ASCII du caractère séparateur.
Exemple :
$deltok(1;2,3,59) retourne $null
$deltok(a.b.c,1,46) retourne b.c
III-B-5. $istok(texte,token,S)▲
Cette fonction retourne $true si le token est dans le texte sinon il retourne $false.
- texte - texte contenant les tokens.
- token- token à comparer.
- S- la valeur ASCII du caractère séparateur.
Exemple :
$istok(1;2,3,59) retourne $false
$istok(a.b.c,a,46) retourne $true
Il existe plusieurs fonctions pour les tokens, je vous invite fortement à les consulter directement sur l'aide de mIRC.
III-C. Conversion d'un texte en tokens▲
/tokenize S texte
- S - la valeur ASCII du caractère séparateur.
- texte- texte contenant les tokens.
La commande /tokenize convertit un texte en tokens numérotés pour faciliter leur utilisation.
/tokenize 45 t1-t2-t3-t4
convertira t1 en $1, t2 en $2, t3 en $3 et t4 en $4.
$0 est le nombre de tokens.
Pour avoir le code ASCII d'un caractère :
//echo -a $asc(caractère)