这样的问题早就讨论过,还要加分? ;;;(strsort strlst) = 含数字后缀的字符串排序-无痕.2004.6 ok! (defun strsort (strlst) (defun strbrk (str / i st1 n) (setq i 0) (while (not(or(= "" (setq st1(substr str(setq i(1+ i)))))(setq n(distof st1))))) (list (substr str 1 (1- i)) (if n n 0) str) ) (defun x-sort (lst do n) (vl-sort lst '(lambda(x y)((eval do)(nth n x)(nth n y)))) ) (mapcar 'last (x-sort (x-sort (mapcar 'strbrk strlst) '< 1) '< 0)) ) ;(princ (strsort '("C1" "C11" "C12" "C2"))) (princ (strsort '("B1" "b1" "B2" "b2" "B11" "b11"))) |