qq509103902 发表于 2015-2-9 14:22:11

请教 数字+字母组合的文本排序 问题

我的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")这样的排序
求大神解决


鱼与熊掌 发表于 2015-2-9 14:37:39

老迈给我搞了,大体是文字长度,和acad sort吧,忘了

Gu_xl 发表于 2015-2-9 14:42:43

(vl-sort l '(lambda (a b) (if (equal (atof a) (atof b) 1e-6) (< a b) (< (atof a) (atof b)))))

qq509103902 发表于 2015-2-9 14:50:21

感谢G版!!

springwillow 发表于 2015-2-11 12:07:39


(setq l_nnt (acad_strlsort '("26A" "25" "26B""26+""22" "3" "30" "29" "2" "2+" "2A" "2B" "1A" "1" )))
页: [1]
查看完整版本: 请教 数字+字母组合的文本排序 问题