明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1708|回复: 4

[已解答] 请教 数字+字母组合的文本排序 问题

[复制链接]
发表于 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吧,忘了
发表于 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)))))
 楼主| 发表于 2015-2-9 14:50:21 | 显示全部楼层
感谢G版!!
发表于 2015-2-11 12:07:39 | 显示全部楼层

  1. (setq l_nnt (acad_strlsort '("26A" "25" "26B"  "26+"  "22" "3" "30" "29" "2" "2+" "2A" "2B" "1A" "1" )))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-6 07:32 , Processed in 0.191146 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表