用这个函数可将你的字母和数字分开,如:(Split "a12b3c45de567fgh890")--> ("a" 12 "b" 3 "c" 45 "de" 567 "fgh" 890) (defun Split (str / tmp i n p x len lst1 lst) (setq tmp (vl-string->list str) lst1 (mapcar '(lambda (x) (and (<= 48 x) (<= x 57))) tmp) n (length lst1) i 0 ) (while (< i n) (setq x (nth i lst1) i (1+ i) ) (if (= i 1) (setq p 1 len 1 ) ;else (if (= x (nth (- i 2) lst1)) (setq len (1+ len)) ;else (setq tmp (substr str p len) tmp (if x tmp (atoi tmp) ) lst (append lst (list tmp)) p i len 1 ) ) ;if ) ;if ) ;while (if (> n 0) (setq tmp (substr str p len) tmp (if x (atoi tmp) tmp ) lst (append lst (list tmp)) ) ) lst )
|