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.