Bonsoir à tous 🙂
Soit une chaîne de caractère "1234.56789\t9876.54321\t11223.23" qui correspond à une coordonnée de point séparer par "\t".
J'ai voulu extraire de cette chaîne les valeurs X - Y - Z
Pour ce faire j'ai utiliser les fonctions "vl-string-right-trim" et "vl-string-left-trim" dans mes codes.
Ce pendant, comment le faire plus proprement car ce que j'ai fait semble trop amateur même si ça marche?
Merci à vous 🙂
Voici ce que j'ai écrit :
(setq ptX (vl-string-right-trim
"123456789."
"1234.56789\t987.54321\t35.23324"
)
ptX2 (vl-string-right-trim "\t" ptX)
ptX3 (vl-string-right-trim "123456789." ptX2)
ptXfinal (vl-string-right-trim "\t" ptX3)
)
(setq ptY (vl-string-right-trim
"123456789."
"1234.56789\t987.54321\t35.23324"
)
ptY2 (vl-string-right-trim "\t" ptY)
ptY3 (vl-string-left-trim "123456789." ptY2)
ptYfinal (vl-string-left-trim "\t" ptY3)
)
(setq ptZ (vl-string-left-trim
"123456789."
"1234.56789\t987.54321\t35.23324"
)
ptZ2 (vl-string-left-trim "\t" ptZ)
ptZ3 (vl-string-left-trim "123456789." ptZ2)
ptZfinal (vl-string-left-trim "\t" ptZ3)
)
Résolu ! Accéder à la solution.
Résolu par _gile. Accéder à la solution.
Salut,
Tu peux utiliser une fonction plus générique comme gc:str2lst (et la fonction inverse gc:lst2str qu'on trouve dans le fichier gc_List.lsp téléchargeable en bas de cette page).
;; gc:str2lst
;; Transforme un chaine avec séparateur en liste de chaines
;;
;; Arguments
;; str : la chaîne
;; sep : le séparateur
(defun gc:str2lst (str sep / pos)
(if (setq pos (vl-string-search sep str))
(cons (substr str 1 pos) (gc:str2lst (substr str (+ (strlen sep) pos 1)) sep))
(list str)
)
)
;; gc:lst2str
;; Concatène une liste de chaînes et un séparateur en une chaine
;;
;; Arguments
;; lst : la liste
;; sep : le séparateur
(defun gc:lst2str (lst sep)
(apply 'strcat
(cons (car lst)
(mapcar (function (lambda (x) (strcat sep x))) (cdr lst))
)
)
)
Exemple:
(gc:str2lst "1234.56789\t9876.54321\t11223.23" "\t")
renvoie : ("1234.56789" "9876.54321" "11223.23")
Que tu peux directement convertir en point avec :
(mapcar 'atof ("1234.56789" "9876.54321" "11223.23"))
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.