begin process at 2008 07 20 04:58:03
1 213 135 membres
56 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LES CHAÎNES DE CARACTÈRES (LES TOKENS)


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 14/05/2005 15:44:48 Vu : 7 829 fois

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

J'ai à mon tour composé un petit tutorial portant sur les tokens. À mon avis, ce sont des identifieurs souvent négligés et qui pourtant, sont d'une utilité capitale.

Il est assez complet et j'espère qu'il saura saturer vos recherches et vos questions. Si vous trouvez une faute majeure, faites moi en part et il me fera un plaisir de la corriger.

Merci à vous !

Tutorial

1. Introduction
2. Format
3. $addtok(Texte,Jeton,C)
4. $deltok(Texte,N-N2,C)
5. $findtok(Texte,Jeton,N,C)
6. $gettok(Texte,N-N2,C) ou $token(Texte,N-N2,C) (commande cachée)
7. $instok(Texte,Jeton,N,C)
8. $istok(Texte,Jeton,C)
9. $matchtok(Texte,Jeton,N,C)
10. $numtok(Texte,C)
11. $puttok(Texte,Jeton,N,C)
12. $remtok(Texte,Jeton,N,C)
13. $reptok(Texte,Jeton,Nouveau Jeton,N,C)
14. $sorttok(Texte,C,ncra)
15. $wildtok(Texte,Chaîne avec joker,N,C)
16. $didtok(Nom du dialog,ID,C)
17. /didtok
18. /tokenize
19. $0, $1, $2, $3,...,$20,$21,...
20. Liste des caractères ASCII
21. Conclusion






1. Introduction

Les Tokens ou encore pour les plus francophones, les jetons, sont en fait une section d'un texte. Ils servent à retourner une ou plusieurs parties d'une chaîne de caractères. Le tout utilisant comme séparateur un caractère ASCII (American Standard Code for Information Interchange), soi-disant un $chr. Pour de plus amples informations, naviguez vers la section listant tous les caractères ASCII.

Bref, ce tutorial élucidera le mystère des Tokens en profondeur. Des exemples commentés démontrant leur utilité seront également à votre disposition. Une base solide du langage mIRC s'offre à vous pour une difficulté moindre. Bonne lecture !



2. Format

Pour commencer vers la bonne voie, il vous faut savoir différencier un Token d'un délimiteur. Notez bien que chaque caractère possède sa propre valeur ASCII.

21:12:34

Ceci représente l'heure sous format HH:nn:ss. Dans cet exemple, les jetons sont les chiffres en bleu et les séparateurs sont les deux-points en rouges. Le premier Token serait donc 21, le deuxième 12 et le troisième 34. La valeur ASCII du séparateur est 58.

21:12:34

Par contre, si nous reprenons la même exemple, mais en utilisant un séparateur différent, le chiffre 2. Les deux jetons seraient 1:1 et :34. La valeur ASCII du séparateur est 50.

Si vous avez bien saisit le format et que vous savez isoler un caractère séparateur d'un jeton, vous êtes en mesure de poursuivre vers les identifieurs.

Nota Bene : Tout au long de ce tutorial, il y aura nombre d'exemples s'offrant à vous. Pour les tester, ils vous suffit d'utiliser la commande :

//echo -a <exemple>



3. $addtok(Texte,Jeton,C)

Syntaxe :

  • Texte : Le texte qui englobe les jetons
  • Jeton : Les jetons qui seront ajoutés au texte
  • C : La valeur ASCII qui séparera le Texte prédéfini du Jeton



Utilité :

L'identifieur $addtok permet d'ajouter un Jeton à une chaîne de caractères. Il placera automatiquement le Jeton à la fin, si celui-ci n'est pas déjà présent dans le texte.


Exemples :

$addtok(Texte1-Texte2-Texte3,Texte4,45) retourne Texte1-Texte2-Texte3-Texte4

On ajoute Texte4 à la fin de la chaîne de caractères Texte1-Texte2-Texte3 et on le sépare par un tiret, le caractère ASCII 45.

$addtok(Texte1-Texte2-Texte3,Texte2,45) retourne Texte1-Texte2-Texte3

On tente d'ajouter Texte2 à la fin de la série de textes, mais le résultat retourne le même qu'au départ, soit Texte1-Texte2-Texte3. Tel mentionné antérieurement, l'identifieur $addtok vérifie si le Jeton n'existe pas dans le Texte et si la condition est positive, il l'ajoute à la fin.

$addtok(Texte1-Texte2;Texte3-Texte4,Texte2,45) retourne Texte1-Texte2;Texte3-Texte4-Texte2

On ajoute le Jeton Texte2 au Texte Texte1-Texte2;Texte3-Texte4 en le délimitant du caractère ASCII 45. Peut-être êtes vous songeur au fait que le Jeton s'est bel et bien ajouté à la fin, même s'il existe parmi le Texte ? Ceci est tout à fait normal car le caractère séparateur est le tiret (45) et le Jeton qui existe déjà est séparé par un point-virgule (59).

Nota Bene : $addtokcs(Texte,Jeton,C) possède les mêmes fonctions que l'identifieur $addtok(Texte,Jeton,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et du Jeton.



4. $deltok(Texte,N-N2,C)

Syntaxe :

  • Texte : Le texte qui englobe les jetons
  • N-N2 : N est la position du jeton dans le texte. N2 sert à spécifier un intervalle dans le texte; ce paramètre est optionnel.
  • C : La valeur ASCII qui différenciera le Texte à effacer selon la position du Jeton



Utilité :

L'identifieur $deltok permet d'effacer le Nème jeton du Texte et retourne la chaîne résultante.

Nota Bene: Vous pouvez spécifier une valeur négative à la Nième position, ce qui retournera la Nième position à partir de la fin en décroissant.

Nota Bene 2: Vous pouvez aussi spécifier tout ce qui suit la Nième position en ajoutant un tiret à la fin du N.


Exemples :

$deltok(Texte1-Texte2-Texte3,1,45) retourne Texte2-Texte3

On efface Texte1 au Texte puisque la position déterminée est la première et le caractère ASCII spécifié est le tiret (45).

$deltok(Texte1-Texte2-Texte3-Texte4,3-4,45) retourne Texte1-Texte2

On efface Texte3 et Texte4 au Texte car les positions déterminées sont la troisième et la quatrième. Le caractère ASCII spécifié est le tiret (45).

$deltok(Texte1-Texte2-Texte3-Texte4,2-,45) retourne Texte1

On efface tout ce qui suit la deuxième position du Texte. La chaîne Texte2-Texte3-Texte4 sera donc écrasée. L'unique survivant s'avère Texte1. Là aussi, le caractère ASCII est le tiret (45).

$deltok(Texte1-Texte2-Texte3-Texte4,-3,45) retourne Texte1-Texte3-Texte4

On efface la troisième position du Texte à partir de la fin car la position est négative. Le jeton exclus est alors Texte2 et le restant siège toujours.



5. $findtok(Texte,Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera recherché parmi le Texte
  • N : N représente la position désirée parmi les Jetons trouvés dans le Texte. Si le chiffre 0 est spécifié, le nombre de résultats trouvés sera retourné.
  • C : La valeur ASCII qui séparera le Texte prédéfini du Jeton



Utilité :

Cet identifieur permet de chercher dans le Texte la position d'un Jeton, s'il est localisé. Le N sera de mise si le Jeton est localisé plus d'une fois.


Exemples :

$findtok(Texte1-Texte2-Texte3,Texte2,1,45) retourne 2

On recherche le Jeton Texte2 parmi la chaîne Texte1-Texte2-Texte3. Celui-ci a bel et bien été trouvé à la deuxième position. Le caractère ASCII est le tiret (45).

$findtok(Texte1-Texte2-Texte3,Texte3,0,45) retourne 1

On recherche Texte3 parmi la chaîne Texte1-Texte2-Texte3. Le paramètre N est nul, cela retournera donc le nombre de fois que le Jeton a été répertorié. Dans ce cas, le Jeton Texte3 séparé du tiret (45) est présent qu'une seule fois dans le Texte.

$findtok(Texte1;Texte2-Texte3;Texte1,Texte1,2,59) retourne 3

On recherche Texte1 séparé par le point-virgule (59) dans le Texte. Étant donné que celui-ci est présent plus d'une fois, le N peut varier. Dans cet exemple, nous avons opté pour le chiffre 2, ce qui retournera l'emplacement de la deuxième position localisée qui est 3.

Nota Bene : $findtokcs(Texte,Jeton,N,C) possède les mêmes fonctions que l'identifieur $findtok(Texte,Jeton,N,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et du Jeton.



6. $gettok(Texte,N-N2,C) ou $token(Texte,N-N2,C) (commande cachée)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • N-N2 : N est la position du jeton dans le texte. N2 sert à spécifier un intervalle dans le texte; ce paramètre est optionnel.
  • C : La valeur ASCII qui délimitera le Texte selon la position du Jeton



Utilité :

Cet identifieur retourne une partie du Texte selon la position et la valeur du caractère ASCII. $gettok ne doit pas être sous-estimé car il est à mon avis le plus utilisé de tous.

Nota Bene : Vous pouvez spécifier une valeur négative à la Nième position, ce qui retournera la Nième position à partir de la fin en décroissant.

Nota Bene 2 : Vous pouvez aussi spécifier tout ce qui suit la Nième position en ajoutant un tiret à la fin du N.


Exemples :

$gettok(Texte1-Texte2-Texte3,2,45) retourne Texte2

On désire obtenir le deuxième jeton séparé par un tiret (45). Ceci retourne Texte2 car il est bel et bien à la deuxième position du Texte.

$gettok(Texte1-Texte2-Texte3-Texte4,-2,45) retourne Texte3

On obtient Texte3 car la 2ième position est négative, ceci dit que nous devons commencer par la fin du Texte. Texte3 est alors correspondant. Le caractère ASCII est un tiret (45).

$gettok(Texte1;Texte2-Texte3;Texte4,1,45) retourne Texte1;Texte2

On obtient Texte1;Texte2 car nous recherchons le premier jeton séparé du tiret (45).

Nota Bene : Le dédoublement de caractères n'est pas pris en considération dans tous les Tokens.

$gettok(-Texte1--Texte2-Texte3---,1,45) retournera Texte1.

Ce bout de code est identique à:

$gettok(Texte1-Texte2-Texte3,1,45) retournera Texte1.



7. $instok(Texte,Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera ajouté au Texte
  • N : N représente la position où le Jeton sera ajouté au Texte. Si le chiffre 0 est spécifié, le jeton sera placé à la toute fin de la chaîne de caractères.
  • C : La valeur ASCII qui délimitera le Texte prédéfini du Jeton à ajouter



Utilité :

$instok est très semblable à son collègue $addtok, mais ajoute le Jeton même si ce dernier existe et a une position précise. Or, un Jeton est ajouté à la Nième position du Texte selon la valeur ASCII donnée.

Nota Bene : Vous pouvez spécifier une valeur négative à la Nième position, ce qui retournera la Nième position à partir de la fin en décroissant.


Exemples :

$instok(Texte1-Texte2-Texte3,Texte4,3,45) retourne Texte1-Texte2-Texte4-Texte3.

Ceci ajoute le Jeton Texte4 à la chaîne de caractères Texte1-Texte2-Texte3. Le tout à la troisième position en prenant comme délimiteur le tiret (45). Le résultat obtenu est alors Texte1-Texte2-Texte4-Texte3.

$instok(Texte1-Texte2-Texte4,Texte3,-1,45) retourne Texte1-Texte2-Texte3-Texte4.

Ceci ajoute le Jeton Texte3 à la première position en commençant par la fin. En effet, lorsque la Nième position est négative, on attribue cette caractéristique décroissante. Comme les autres exemples, le caractère ASCII est le tiret (45).

$instok(Texte1-Texte2-Texte3,Texte4,0,45) retourne Texte1-Texte2-Texte3-Texte4.

Ceci ajoute le Jeton Texte4 à la fin. En effet, lorsque la Nième position spécifiée est 0, le Jeton ira se placer à la fin du Texte, si bien sûr le caractère ASCII correspond. Ici nous avons opté pour le tiret (45).

$instok(Texte1;Texte2-Texte3;Texte4,Texte5,3,59) retourne Texte1;Texte2-Texte3;Texte5;Texte4.

On ajoute le Jeton Texte5 à la chaîne Texte1;Texte2-Texte3;Texte4 à la troisième position délimité par le point-virgule (59). Le résultat est ainsi Texte1;Texte2-Texte3;Texte5;Texte4.



8. $istok(Texte,Jeton,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera recherché au Texte
  • C : La valeur ASCII qui délimitera le Texte prédéfini du Jeton à rechercher



Utilité :

Ceci sert à rechercher un Jeton parmi le Texte sélectionné en le délimitant par un caractère ASCII. Si le Jeton est présent dans le Texte, mIRC retournera $true, autrement $false.


Exemples :

$istok(Texte1-Texte2-Texte3,Texte2,45) retourne $true

On cherche ici le Jeton Texte2 parmi la chaîne de caractères suivante Texte1-Texte2-Texte3. On vérifie aussi s'il a comme séparateur le tiret (45). Le résultat est positif, donc on obtient $true.

$istok(Texte4;Texte4;Texte4,Texte4,45) retourne $false

On vérifie si Texte4 est présent parmi la chaîne Texte4;Texte4;Texte4 et qu'il est séparé par le tiret. Texte4 est effectivement parmi le Texte, mais séparé par un point-virgule. Le résultat est négatif, donc mIRC retourne $false

Nota Bene : $istokcs(Texte,Jeton,C) possède les mêmes fonctions que l'identifieur $istok(Texte,Jeton,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et du Jeton.



9. $matchtok(Texte,Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera recherché parmi le Texte
  • N : N représente la position désirée parmi les Jetons trouvés dans le Texte. Si le chiffre 0 est spécifié, le nombre de résultats trouvés sera retourné.
  • C : La valeur ASCII qui séparera le Texte prédéfini du Jeton



Utilité :

Cet identifieur permet de chercher dans le Texte un Jeton et retournera le mot ou le bout de phrase correspondant, s'il est localisé. Le tout selon le caractère ASCII spécifié et la position déterminée.


Exemples :

$matchtok(Texte1-Texte2-Texte3,e,0,45) retourne 3

On recherche le nombre de fois où le Jeton e est repéré parmi le Texte. En effet, la position 0 retourne le nombre de résultats repérés. Il est donc présent 3 fois si on utilise comme caractère ASCII le tiret (45).

$matchtok(Texte1-Texte2-Texte3,e,2,45) retourne Texte2

Encore une fois, on recherche si le Jeton e est présent parmi le Texte. Cependant, on spécifie la deuxième position. $matchtok vérifiera donc si e est présent dans le deuxième jeton et si oui, le retournera. Dans ce cas-ci, il retourne Texte2. Le caractère ASCII est le tiret (45).

$matchtok(Texte1;Mot1;Texte3,1,2,59) retourne Mot1

Ici, on recherche si le Jeton 1 est présent dans la chaîne de caractères Texte1;Mot1;Texte3. On désire obtenir le deuxième résultat trouvé puisque le chiffre 2 est indiqué. Étant donné que le Jeton se situe plus d'une fois dans le Texte, il est très important de désigner une position désirée. Bref, mIRC retournera Mot1 car c'est le deuxième Jeton contenant 1 répertorié. Le caractère ASCII est le point-virgule (59).

Nota Bene : $matchtokcs(Texte,Jeton,N,C) possède les mêmes fonctions que l'identifieur $matchtok(Texte,Jeton,N,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et du Jeton.



10. $numtok(Texte,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • C : La valeur ASCII du caractère séparateur



Utilité :

Cet identifieur retourne le nombre de Jetons trouvés dans le Texte, tout dépendamment du caractère ASCII.


Exemples :

$numtok(Texte1-Texte2-Texte3,45) retourne 3

On recherche combien de Jetons possède la chaîne de caractères Texte1-Texte2-Texte3. Si vous observez bien le format, vous comprendrez que le Texte en contient 3 si on choisit le tiret (45) comme délimiteur.

$numtok(Texte1;Texte2-Texte3-Texte4,59) retourne 2

On recherche combien de Jetons séparés par le point-virgule sont présents (59). Il n'y en a que deux, Texte1 et Texte2-Texte3-Texte4.

$numtok(Texte1-Texte2-Texte3,59) retourne 1

Étant donné que le caractère séparateur, le point virgule (59), est absent dans le Texte, la valeur de retour sera toujours 1.



11. $puttok(Texte,Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui en écrasera un autre
  • N : N représente la position où le Jeton sera remplacé dans le Texte
  • C : La valeur ASCII qui délimitera le Texte prédéfini du Jeton à écraser



Utilité :

$puttok est très similaire à $addtok et $instok. Il a pour but d'ajouter un Jeton au Texte. Cependant, contrairement aux précédents, selon la position déterminée et le caractère ASCII, le Jeton retourné sera remplacé par celui indiqué.

Nota Bene: Vous pouvez spécifier une valeur négative à la Nième position, ce qui retournera la Nième position à partir de la fin en décroissant.


Exemples :

$puttok(Texte1-Texte3-Texte3,Texte2,2,45) retourne Texte1-Texte2-Texte3

Comme vous pouvez le constater, on désire écraser le deuxième Jeton du Texte car la position est 2. On veut donc remplacer le deuxième Texte3 par Texte2. Le caractère ASCII est le tiret (45).

$puttok(Texte1-Texte2-Texte3;Texte5,Texte4,2,59) retourne Texte1-Texte2-Texte3;Texte4

Dans cet exemple, on désire remplacer le deuxième Jeton, soit Texte5, séparé par le point-virgule (59). Le Jeton spécifié est Texte4, ce qui retournera Texte1-Texte2-Texte3;Texte4.

$puttok(Texte1-Texte2-Texte4,Texte3,-1,45) retourne Texte1-Texte2-Texte3

Étant donné qu'une valeur négative est spécifiée à N, ceci équivaut à la première position à partir de la fin. On veut donc remplacer Texte4 par Texte3. Le tout délimiter par le tiret (45).



12. $remtok(Texte,Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera effacé
  • N : N représente la position du Nième Jeton trouvé dans le Texte
  • C : La valeur ASCII qui délimitera le Texte prédéfini du Jeton à effacer



Utilité :

Relativement semblable à $deltok, $remtok a pour but d'effacer un Jeton parmi le Texte. Si le Jeton spécifié existe, il sera supprimer sans pitié. Autrement, le Texte sera retourner tel quel.


Exemples :

$remtok(Texte1-Texte2-Texte3,Texte1,1,45) retourne Texte2-Texte3

Ici, nous tentons d'éliminer le Jeton Texte1 de la chaîne Texte1-Texte2-Texte3. Étant donné que le N correspond au premier Jeton identifié dans le Texte, la valeur de retour sera Texte2-Texte3. Le caractère ASCII est le tiret (45).

$remtok(Texte1-Texte2-Texte3,Texte1,2,45) retourne Texte1-Texte2-Texte3

Cet exemple est semblable au précédent, mais la Nième fois que le Jeton est trouvé diffère. Étant donné que le Jeton Texte1 n'est pas répertorié deux fois, la valeur de retour est la même que le Texte. Le caractère ASCII est le tiret (45).

$remtok(Texte1-Texte2-Texte3-Texte2,Texte2,2,45) retourne Texte1-Texte2-Texte3

Dans cet exemple, on désire effacer le Jeton Texte2 du Texte. Vu le N ajusté à 2, nous allons effacer le deuxième Texte2 trouvé. Le caractère ASCII est le tiret (45).

Nota Bene : $remtokcs(Texte,Jeton,N,C) possède les mêmes fonctions que l'identifieur $remtok(Texte,Jeton,N,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et du Jeton.



13. $reptok(Texte,Jeton,Nouveau Jeton,N,C)

Syntaxe :

  • Texte : Le texte qui englobe les Jetons
  • Jeton : Le jeton qui sera remplacé
  • Nouveau Jeton : Le nouveau jeton qui remplacera l'ancien jeton
  • N : N représente la position du Nième Jeton qui sera remplacé dans le Texte
  • C : La valeur ASCII qui délimitera le Texte prédéfini du Jeton à effacer



Utilité :

$reptok vise à remplacer un Jeton précis d'une chaîne de caractères par un Nouveau Jeton. Il effectue son changement en fonction du Nième Jeton répertorié et de la valeur ASCII soumise.


Exemples :

$reptok(Texte1-Texte2-Texte3,Texte1,Texte3,1,45) retourne Texte3-Texte2-Texte3

Dans cet exemple, nous voulons remplacer le 1er Jeton repéré, soit Texte1. Étant donné qu'il est bel et bien présent dans la chaîne de caractères, nous le remplacerons par le Nouveau Jeton Texte3. Le caractère ASCII est le tiret (45).

$reptok(Texte2-Texte3-Texte2,Texte2,Texte1,2,45) retourne Texte2-Texte3-Texte1

Comme vous pouvez le constater, la série Texte2-Texte3-Texte2 contient deux fois le Jeton Texte2. C'est pourquoi la Nième position sélectionnée s'avère cruciale. Bref, nous voulons remplacer le second Texte2 par le Nouveau Jeton Texte1. Le caractère ASCII est le tiret (45).

Nota Bene : $reptokcs(Texte,Jeton,Nouveau Jeton,N,C) possède les mêmes fonctions que l'identifieur $reptok(Texte,Jeton,Nouveau Jeton,N,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte, du Jeton et du Nouveau Jeton.



14. $sorttok(Texte,C,ncra)

Syntaxe :

  • Texte : Le texte qui sera classé
  • C : La valeur ASCII qui délimitera le Texte prédéfini du tri
  • ncra : Les diverses formes de tri pouvant être utilisées


n : tri numérique (1-2-3-4-5)
c : tri selon le préfixe des pseudos sur un canal
r : Généralement combiné à une autre valeur, r inverse l'ordre du tri (5-4-3-2-1)
a : tri alphanumérique (a1-a2-b1-b2-c3)

Nota Bene : Le tri par défaut est alphabétique, donc si vous ne spécifiez rien, le Texte sera classé par ordre alphabétique (a-b-c-d-e)


Utilité :

$sorttok est un token assez spécial. Il sert à trier une chaîne de caractères de façon très spécifique. Le tout alphabétiquement, numériquement, selon les préfixes des pseudos sur un canal ou encore un tri alphanumérique.


Exemples :

$sorttok(d-z-e-a,45) retourne a-d-e-z

Aucune valeur n'est spécifiée, donc mIRC attribue celle par défaut; le tri alphabétique. Si vous connaissez moindrement votre alphabet, vous saurez que le classement est juste. Le caractère ASCII est le tiret (45).

$sorttok(d-z-e-a,45,r) retourne z-e-d-a

La valeur r a pour but d'inverser le tri alphabétique. Donc il priorisera les dernières lettres de l'alphabet jusqu'à la première. Le caractère ASCII est le tiret (45).

$sorttok(b1-a2-e5-d4-e2-a1,45,a) retourne a1-a2-b1-d4-e2-e5

Le tri alphanumérique, représenté par la valeur a, classe en ordre les lettres et les chiffres. Il prend donc en considération l'alphabet et notre système décimal. Le caractère ASCII est le tiret (45).

$sorttok(b1-a2-e5-d4-e2-a1,45,ar) retourne e5-e2-d4-b1-a2-a1

C'est en fait le même exemple que ci-dessus, en exception de la valeur r intégrée. Le tri alphanumérique sera inversé. C'est pourquoi le e5 est classé premier alors que le e2 suit juste après.

Nota Bene : $sorttokcs(Texte,C,ncra) possède les mêmes fonctions que l'identifieur $sorttok(Texte,C,ncra), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et priorisera les majuscules durant le tri.



15. $wildtok(Texte,Chaîne avec joker,N,C)

Syntaxe :

  • Texte : Le texte que vous désirez reformater
  • Chaîne avec joker : Cette option est le bout de phrase que vous désirez repérer dans le Texte selon les jokers instaurés (*).
  • N : Retourne le Nième Jeton répertorié. Si le chiffre 0 est spécifié, le nombre de résultats trouvés sera retourné.
  • C : La valeur ASCII qui délimitera le Texte prédéfini de la Chaîne avec joker



Utilité :

$wildtok se différencie des autres tokens par sa capacité de retourner un bout de phrase s'il existe parmi le Texte. Pour se faire, vous pouvez spécifier des jokers, plus communément connu sous le nom de « petite étoile » ou sous le caractère « * », qui eux remplacent n'importe quel caractère.


Exemples :

$wildtok(Texte1-Texte2-Texte3,Te*1,1,45) retourne Texte1

Ici nous tentons de repérer la première chaîne qui commencerait par Te et qui se terminerait par un 1. Il y a un seul mot qui correspond aux critères exigés, c'est pourquoi Texte1 sera retourné. Le caractère ASCII est le tiret (45).

$wildtok(Texte1-Texte1-Texte3,*1,0,45) retourne 2

Étant donné que la valeur 0 est spécifiée en terme de position, la résultante sera le nombre de mots qui se terminent par un 1. Nous retrouvons Texte1 à deux reprises et celui-ci se termine par un 1. Il y a donc 2 jetons qui se terminent par un 1 et qui sont délimités par le caractère ASCII du tiret (45).

$wildtok(Texte1-Texte2-Texte3,T*x*,3,45) retourne Texte3

Finalement, on recherche parmi la chaîne Texte1-Texte2-Texte3 la troisième fois que la Chaîne avec Joker est trouvée. Tous contiennent la lettre T à l'origine et la lettre x qui devrait suivre peu après. Nonobstant, nous avons spécifié le 3e résultat, ce qui retournera Texte3. Le caractère ASCII est le tiret (45).

Nota Bene : $wildtokcs(Texte,Chaîne avec joker,N,C) possède les mêmes fonctions que l'identifieur $wildtok(Texte,Chaîne avec joker,N,C), mais est sensible à la case des caractères. Il prend donc en considération les majuscules et les minuscules du Texte et de la Chaîne avec les jokers.



16. $didtok(Nom du dialog,ID,C)

Syntaxe :

  • Nom du dialog : Le nom du dialog où vous convertirez la liste en jetons
  • ID : Le numéro de l'ID de la liste ou de la boîte combo
  • C : La valeur ASCII qui délimitera le contenu de la liste



Utilité :

Sert à retourner tout le contenu d'un ID dans un Dialog sur une même ligne. Chacune des lignes de la liste ou de la boîte combo sera séparée par un caractère ASCII. À noter que cet identifieur est utile lorsque le contenu de l'ID est limité, quitte à ne pas recevoir d'erreurs.


Exemple :

Si par exemple nous avons un Dialog nommé « Didtok ». Par le fait même, celui-ci contient une liste qui a comme ID 1:

Texte1
Texte2
Texte3


Nous désirons mettre chaque partie de la liste sur la même ligne et les séparer par un tiret (45). La commande qui devra être utilisée sera :

$didtok(Didtok,1,45) retourne Texte1-Texte2-Texte3

Nota Bene : Cette commande est seulement valable dans les Dialogs.



17. /didtok

Syntaxe :

  • Nom du dialog : Le nom du dialog où vous ajouterez le contenu à une liste ou à une boîte combo
  • ID : Le numéro de l'ID de la liste ou de la boîte combo
  • C : La valeur ASCII qui délimitera le contenu du Texte
  • Texte : Le texte qui sera ajouté à la liste ou à la boîte combo



Utilité :

/didtok est une commande très utile lorsqu'on désire optimiser nos codes. Elle produit l'effet contraire de son cousin, $didtok. Elle permet d'ajouter tout le contenu de notre Texte à une liste ou encore à une boîte combo. Cette méthode évite de bien grandes lignes.


Exemple :

Si par exemple nous avons un Dialog nommé « Didtok ». Par le fait même, celui-ci contient une liste qui a comme ID 1. Cependant, elle est vide pour l'instant et nous désirons y ajouter les valeurs suivantes :

Texte1
Texte2
Texte3


Pour se faire, nous devrons utiliser :

/didtok Didtok 1 45 Texte1-Texte2-Texte3

Cette commande produira l'effet désiré.

Nota Bene : Cette commande est seulement valable dans les Dialogs.



18. /tokenize

Syntaxe :

  • C : La valeur ASCII du caractère séparateur
  • Texte : Le texte qui sera convertit en jetons numérotés



Utilité :

La commande /tokenize nous permet de convertir un Texte en jetons numérotés. Par la suite, la résultante est beaucoup plus maniable et facile d'utilisation. Le tout en choisissant un caractère ASCII qui lui, délimite le contenu du Texte.


Exemples :

/tokenize 45 Texte1-Texte2-Texte3 convertira Texte1 en $1, Texte2 en $2 et Texte3 en $3

À la suite de cette commande, si vous effectuez :

//echo -a $2

Vous obtiendrez Texte2

Le caractère ASCII spécifié est le tiret (45). mIRC ira donc chercher chaque Jetons du Texte séparé par le tiret pour ensuite en ressortir une liste numérotée.

/tokenize 59 Texte1;Texte2-Texte3 convertira Texte1 en $1 et Texte2-Texte3 en $2

Quelque peu différent du précédent exemple, celui-ci vous prouve que le caractère ASCII est variable. Dans ce cas, nous avons spécifié le point-virgule (59).



19. $0, $1, $2, $3,...,$20,$21,...

Syntaxe :

  • $0 : Le nombre de jetons dans le Texte séparés par un espace (32)
  • $1 : La première position du Texte
  • $2 : La deuxième position du Texte
  • ...
  • $21 La 21e position du Texte



Utilité :

Ces jetons sont déjà générés par mIRC lui-même, excepté si vous les créez à partir de la commande /tokenize. À mon avis, ces identifieurs infinis sont les plus utiles d'entre tous. Ils permettent de retourner le texte correspondant à la position sélectionnée lors d'un événement quelconque ou même lors d'un alias.

Nota Bene : Vous pouvez aussi spécifier tout ce qui suit le $xième jeton en ajoutant un tiret à la fin du $x.


Nota Bene 2 : À nouveau, si vous inscrivez le tiret au milieu de deux jetons numérotés, soit $N-$M, la texte entre la Nième position jusqu'à la Mième sera retourné. Dans cet exemple, N et M peuvent être remplacés par n'importe quel nombre.


Exemples :

alias Texte2 { echo -a $2- }

Si vous placez cet alias dans vos contrôles (alt+r) et que vous tapez :

/Texte2 Voici un exemple

Vous obtiendrez les mots « un exemple ». En effet, $2- représente le deuxième mot trouvé et ses suivants.

alias Texte2 { echo -a $0 }

Cet alias est semblable au précédent. Si vous le placez dans vos contrôles (alt+r) et que vous tapez :

/Texte2 Voici un exemple

Vous obtiendrez le chiffre 3. En effet, $0 représente le nombre de jetons présents qui sont séparés par un espace; le caractère ASCII 32. Dans cet exemple, il y a bel et bien trois mots séparés par un espace.

alias Texte2 { echo -a $2-4 }

Si vous placez cet alias dans vos contrôles (alt+r) et que vous tapez :

/Texte2 Voici un exemple dominante

Vous obtiendrez les mots « un exemple dominante ». En effet, $2-4 retourne le deuxième mot trouvé jusqu'au quatrième.

Les jetons numérotés sont également valides dans la boîte d'édition.

on *:text:*:*:if ($3) { echo -a $3 }

Une fois placé dans vos contrôles (alt+r), ceci servira à vous retourner le troisième mot de chaque phrase dictée par autrui. La requête s'effectue seulement s'il y a bel et bien un troisième mot.

Finalement, vous saurez constater que les identifieurs $x remplacent des informations manquantes dans de nombreux cas. À vous de les approfondir et de les découvrir davantage.



20. Liste des caractères ASCII

Je vous invite à entrer le code ci-dessous dans vos contrôles (alt+r) afin de générer une liste automatisée des caractères ASCII. À la suite, il ne vous restera qu'à taper /ascii pour qu'une fenêtre s'offre à vous.

alias ascii {
  window @Ascii | var %o 1 | while (%o <= 255) { aline @Ascii %o = $chr($ifmatch) | inc %o }
}

Nota Bene: Un identifieur est déjà conçu pour retourner la valeur ASCII d'un caractère précis. Par exemple, si vous désirez connaître le tiret, il vous suffit de taper :

//echo -a $asc(-) retourne 45

Nota Bene 2 : Voici la valeur ASCII des caractères suivants, qui sont parfois omis par plusieurs :

  • Ctrl+B - Gras : 2
  • Ctrl+K - Coloré : 3
  • Ctrl+O - Annulé : 15
  • Ctrl+S - Souligné : 31
  • Barre d'espacement: 32




21. Conclusion

En concluant, les jetons sont très simples d'utilisation. Ils font parti des outils les plus puissants du langage mIRC, il ne faut surtout pas les négliger. Je vous rappel qu'ils sont utiles dans la plupart des situations et leur utilisation est quintessenciel.

J'ai eu beaucoup de plaisir à écrire ce tutorial et j'ai dépensé beaucoup de mon temps. J'ai tenté d'intégrer un maximum d'explications pour qu'il soit utile et clair pour tous les niveaux. Or, j'espère que vous en ferez bon usage !

Rédigé par Raynor le 19 février 2005

14 mai 2005 15:57:57 :
- Redirection des liens vers IRCFR plutôt que Scriptsdb.org.
  • signaler à un administrateur
    Commentaire de KiNdErMaXi le 14/05/2005 19:40:41

    j'ai pas trop regarder le tuto mais il faudrai mettre [mIRC] devant le titre de ton tuto parce que tout les site de code source le voit et ce serai bien de savoir en quel language c'est ;)

  • signaler à un administrateur
    Commentaire de raynor2706 le 14/05/2005 19:50:14

    Etape 1/3 Dans quelle langage est le tutorial que vous souhaitez poster ?
    IRC

    Je ne vois pas où est le problème.

  • signaler à un administrateur
    Commentaire de MaX_62 le 14/05/2005 21:09:59

    Tout y est, a part peut etre l'identifieur $*, mais il reste assez rare d'utilisation.
    PS : je connaissais pas $token :p

  • signaler à un administrateur
    Commentaire de KiNdErMaXi le 14/05/2005 23:52:11

    autant pour moi :)

  • signaler à un administrateur
    Commentaire de steve6000 le 17/05/2005 20:43:47

    ben c'est simple les $*

    alias tez {
      tokenize 45 a-b-c-d-e-f
      echo -a $*
    }
    alias tez2 {
      var %i = 1, %tmp = a-b-c-d-e-f
      while (%i <= $numtok(%tmp,45)) {
        echo -a $gettok(%tmp,%i,45)
        inc %i
      }
    }

    Cela donne le même resulta, mais c'est pas très stable..

    if ($* == a) je croi pas que les fonction somaire sont stable dans les if :o

  • signaler à un administrateur
    Commentaire de steve6000 le 17/05/2005 20:44:13

    ben c'est simple les $*

    alias tez {
      tokenize 45 a-b-c-d-e-f
      echo -a $*
    }
    alias tez2 {
      var %i = 1, %tmp = a-b-c-d-e-f
      while (%i <= $numtok(%tmp,45)) {
        echo -a $gettok(%tmp,%i,45)
        inc %i
      }
    }

    Cela donne le même resulta, mais c'est pas très stable..

    if ($* == a) je croi pas que les fonction somaire sont stable dans les if :o

  • signaler à un administrateur
    Commentaire de raynor2706 le 19/05/2005 07:11:15

    Je ne considère pas vraiment $* comme un Token, surtout qu'il n'est pas identifié dans l'aide.

  • signaler à un administrateur
    Commentaire de mordrhim le 12/06/2005 05:14:05

    vu qu'on parle des chaine ici . je pose une petite question ...
    comment peut-on verifier si la chaine de carractere est un nombre.

    par exemple, je pose une question don la reponse est un nombre (on va prendre 456)
    - si on donne un nombre plus grand ca dit "trop grand" (ca je sais faire)
    - si on donne un plus petit "trop petit". (ca aussi, c'est pas laquestion)
    - si on donne un mot/phrase ca répond "la réponse est un nombre."

    comment on fait le test sur cette entrée ?

    merci d'avance si vous me répondez et désolé si je suis pas au bon endroit.

    Bonne continuation a tous.

  • signaler à un administrateur
    Commentaire de MaX_62 le 14/06/2005 11:11:02

    Faut vérifier avec l'opérateur isnum :
    if (<chaine> isnum <x-y>)
    Si tu spécifie x et y, ça va vérifier si le nombre est compris entre x et y. Tu peux mettre tt simplement "if (<chaine> isnum)"

  • signaler à un administrateur
    Commentaire de mordrhim le 19/06/2005 14:09:50

    ha .. merci bien ^^

    comem ca va devrai le faire, je vais m'y remettre

  • signaler à un administrateur
    Commentaire de raynor2706 le 20/06/2005 14:05:36

    Comme MaX_62 l'a dit, isnum serait une solution, quelque peu facile.
    Pour ma part je favoriserais le Regex puisqu'il peut s'avérer utile dans d'innombrables situations. Mais si tu ne te sens pas à l'aise avec sa complexité, tu devrais utiliser "isnum". Par contre, le Regex pourrait te permettre de réaliser ta demande entière en deux fois moins de caractères et en deux fois plus rapides.

    $regex(456,[0-9]) ou $regex(456,[[:digit:]])

    Dans ce code tu peux y intégrer les conditions nécessaires pour vérifier si le nombre est ">" ou "<".

    (?(condition)yes|no)

  • signaler à un administrateur
    Commentaire de mordrhim le 23/06/2005 21:42:28

    yess .. raynor

    merci .. merci .. C bien mieux .. mais bon .. faut que je m'habiteu au regnex .. parceque ca fait que 3 mois que je me suis mis aux scripts mircs .. donc voila quoi

    merci a vous tous

    *retourne sur sa prog*

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS