| N° | Fonction | Catégorie | Version |
|---|---|---|---|
| BIL 16 | BiL_FrmLst | Gestion des Listes | 1.0 - Janvier 2007 |
| But | Découpe une chaîne en éléments (chaînes) de liste. |
| Prototype | (BiL_FrmLst Global_Chaîne Séparateur) |
| Argument | Global_Chaîne - La chaîne à découper - chaîne - Séparateur - Caractère séparateur - chaîne - |
| Retours | Une liste de sous-chaînes - Liste - |
| Var. globales | Néant |
| Description | Découpe une chaîne en plusieurs sous-chaînes aux endroits indiqués par un caractère séparateur, et retourne l'ensemble sous forme d'une liste. |
| Notes | Le caractère séparateur peut être tout caractère non spécial. Cette fonction est intéressante pour récupérer des valeurs stockées dans un fichier texte (Voir fonction BiF_ReadFileTxt) . |
| Exemples |
Commande: (BiL_FrmLst "Bleu*Vert*Jaune*Noir" "*")
retourne ("Bleu" "Vert" "Jaune" "Noir")
Commande: (BiL_FrmLst "Bleu*Vert*Jaune*Noir" "$")
retourne ("Bleu*Vert*Jaune*Noir")
Commande: (BiL_FrmLst "123|**456**|789.25" "|")
retourne ("123" "**456**" "789.25")
|
1- (defun BiL_FrmLst (*Line *Char / Pos_Dep Pos_Sep Flag Lst_Ret) 2- (setq Pos_Dep 1) 3- (while (not Flag) 4- (setq *Line (substr *Line Pos_Dep) 5- Pos_Sep (BiS_TestFCar *Line *Char) 6- ) 7- (if (not Pos_Sep) 8- (setq Pos_Sep (1+ (strlen *Line)) 9- Flag T 10- ) 11- ) 12- (setq Lst_Ret (cons (substr *Line 1 (1- Pos_Sep)) Lst_Ret) 13- Pos_Dep (1+ Pos_Sep) 14- ) 15- ) 16- (setq Lst_Ret (reverse Lst_Ret)) 17- )
Ligne 2 : Initialisation de la variable indiquant la position de début de la
sous-chaine en cours
Ligne 3 : Boucle tant que le drapeau est nil,
Ligne 4 : Réduit l'argument chaîne *Line à la portion de *Line commençant à Pos_Dep,
jusqu'à la fin.
Ligne 5 : Recherche la position du séparateur à l'aide de la fonction BiS_TestFCar
et stocke-la dans Pos_Sep.
Ligne 7 : S'il n'y a pas de séparateur dans la chaîne,
Ligne 8 : Conserve en Pos_Sep la longueur de la chaîne restante
Ligne 9 : Marque le drapeau en T pour indiquer qu'il n'y a plus de séparateur
dans la chaîne restante.
Ligne 12 : Construit la liste de retour en y ajoutant la sous-liste commençant au
premier caractère jusqu'au séparateur (non compris).
Ligne 16 : Retourne la liste de retour après l'avoir retournée pour qu'elle soit
dans le bon ordre.