4. Les tokens▲
4-1. 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.
4-2. Fonctions de traitement des tokens▲
4-2-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ère 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.
4-2-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
4-2-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
4-2-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
4-2-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.
4-3. 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.
//echo -a $asc(caractère)