BiS_ChgCar

Fonction Catégorie Version
BIS 05 BiS_ChgCar Gestion de Chaînes 1.0 - Janvier 2007

Description

But Remplace un caractère par un autre dans une chaîne.
Prototype (BiS_ChgCar Texte_Cible Ancien_Car New_Car)
Arguments Texte - Le texte à modifier - chaîne -
Ancien_Car- Le caractère à remplacer - chaîne -
New_Car - Le caractère de remplacement - chaîne -
Retours La chaîne modifiée
Var. globales Néant
Description Remplace toutes les occurrences d'un caractère par un autre caractère dans une chaîne de texte.
Notes Le programme fait la différence entre majuscules et minuscules.
On peut remplacer un caractère par 2 ou plusieurs caractères, par contre l'inverse n'est pas possible avec cette fonction.
(Dans ce cas il faut utiliser les fonctions BiS_ChgStr ou BiS_ChgStrNo)
Exemples

(Bis_ChgCar "martin" "t" "V")   retourne   "marVin"
(BiS_ChgCar "martin" "T" "V")   retourne   "martin"
Commande: (Bis_ChgCar	"abracadabra" "a" "u")
	retourne   	"ubrucudubru"
Commande: (BiS_ChgCar	"abracadabra" "a" "ou")
	retourne 	"oubroucoudoubrou"
	mais, attention,
Commande: (BiS_ChgCar	"abracadabra" "ra" "u")
	retourne	"abracadabra"
	Il faut 1 seul caractère comme 2ème argument.
(Bis_ChgCar "ABCDEF" 1 "z")	   retourne	 nil
	Le 2ème argument n'est pas une chaîne.
	

La fonction


 1-  (defun BiS_ChgCar (*OldText *OldChar *NewChar / Cpt1 NewText)

 2-     (if (and
 3-             (= (type *OldText) 'STR)
 4-             (= (type *OldChar) 'STR)
 5-             (= (type *NewChar) 'STR)
 6-         )
 7-         (progn
 8-            (setq Cpt1 1
 9-                  NewText ""
10-            )
11-            (repeat (strlen *OldText)
12-              (if (= (substr *OldText Cpt1 1) *OldChar)
13-                  (setq Newtext (strcat NewText *NewChar))  
14-                  (setq Newtext (strcat NewText (substr *OldText Cpt1 1)))  
15-              )
16-              (setq Cpt1 (1+ Cpt1))
17-            )					;   fin  de repeat
18-            (eval NewText)
19-         )						;   fin  de progn ligne 7
20-     )						;   fin  de if  ligne 2
21-   )							;   fin  de defun

Lignes 2-5 :  Vérifie si les trois arguments sont des chaînes,  et si oui,
Lignes 8, 9 :   Initialisation du compteur position_du_caractère_dans_chaîne 
					et de la chaîne de retour.
Ligne 11 :	 Répète un nombre de fois égal au nombre de caractères de la 
					chaîne à traiter,
Ligne 12 :	 Si le caractère numéro Cpt1 est égal au caractère à changer,
Ligne 13 :	   Ajoute à la chaîne de retour, le caractère de remplacement.
Ligne 14 :	   Sinon, Ajoute à la chaîne de retour, le caractère testé (numéro Cpt1)
Ligne 16 :	  Incrémente le compteur Cpt1 pour passer au caractère suivant.
Ligne 17 :	Remonte ligne 11 
Ligne 18 :	Retourne  la chaîne modifiée.

Type : Renvoie le type de l'élément spécifié.
Repeat : Ici, évalue les lignes 12 à 18 autant de fois qu'il y a de caractères dans la chaîne à modifier
Strlen : Renvoie le nombre de caractères présents dans la chaîne OldText (nombre entier).
Substr : Ici, extrait de la chaîne *OldText la chaîne commençant au n° Cpt1 et de longueur 1 caractère
Strcat : Ligne 13 : Renvoie la chaîne NewText résultant de la concaténation de NewText et de NewChar
Eval : Renvoie le résultat de l'évaluation d'une expression AutoLISP.