请教 数字+字母组合的文本排序 问题
我的list 的数据是这样的l_nnt '("26A" "25" "26B""26+""22" "3" "30" "29" "2" "2+" "2A" "2B" "1A" "1")
程序如下
(defun c:dd3()(vl-load-com)(setq l_nnt '("26A" "25" "26B""26+""22" "3" "30" "29" "2" "2+" "2A" "2B" "1A" "1" ))(vl-sort l_nnt (function (lambda (e1 e2)(< e1 e2))) ))
但是因为 超过10以后数据就会变成类似("1" "1A" "2" "2+" "22" "25" "26+" "26A" "26B" "29" "2A" "2B" "3" "30")这个样子的。。没法做成顺序排列。。 而需要的是("1" "1A" "2" "2+" "2A" "2B" "3" "22" "25" "26+" "26A" "26B" "29""30")这样的排序
求大神解决
老迈给我搞了,大体是文字长度,和acad sort吧,忘了 (vl-sort l '(lambda (a b) (if (equal (atof a) (atof b) 1e-6) (< a b) (< (atof a) (atof b))))) 感谢G版!!
(setq l_nnt (acad_strlsort '("26A" "25" "26B""26+""22" "3" "30" "29" "2" "2+" "2A" "2B" "1A" "1" )))
页:
[1]