明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3833|回复: 19

[已解答] 利用vl-sort 对中文进行排序,未能出现设想结果,请各位大侠帮忙,谢谢!

[复制链接]
发表于 2013-8-10 06:55:04 | 显示全部楼层 |阅读模式
(vl-sort '("1层" "2层" "16层" "3层" "屋面层" "4-15奇数层" "4-15偶数层" "17层") '<)
;返回值为:  ("16层" "17层" "1层" "2层" "3层" "4-15偶数层" "4-15奇数层" "屋面层")
;想要的值为:  ("1层" "2层" "3层" "4-15偶数层" "4-15奇数层" "16层" "17层" "屋面层")

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-8-10 07:56:04 | 显示全部楼层
如果没有中文,对字串比较结果也是相同的。
建议将数字与中文分开,数字串转换成数字再排序。

点评

貌似 数字字符串 的比较 只认首尾数吧!  发表于 2013-8-10 22:13
 楼主| 发表于 2013-8-10 08:02:34 | 显示全部楼层
这个思路我想过,不过对于   “4-15”这样的数字,排序也 不对

点评

严格的说是数字串  发表于 2013-8-10 08:40
发表于 2013-8-10 09:14:04 来自手机 | 显示全部楼层
(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
 楼主| 发表于 2013-8-10 14:01:16 | 显示全部楼层
Gu_xl斑主,看不懂你写的,条件只有一列表啊
发表于 2013-8-10 15:55:55 | 显示全部楼层
_$ (aaa '("1层" "2层""16层" "3层" "屋面层""4-15奇数层" "4-15偶数层" "17层"))
("屋面层" "1层" "2层" "3层" "4-15奇数层" "4-15偶数层" "16层" "17层")
 楼主| 发表于 2013-8-10 16:46:25 | 显示全部楼层
楼上两位版主,不要跟我玩捉迷藏了,只给出结果!不懂!!
发表于 2013-8-10 22:10:35 | 显示全部楼层
楼主吧 vl-sort函数 看明白就知道G版说的了。。

6楼的就不要研究了。 我也看不懂。。
发表于 2013-8-11 09:31:23 | 显示全部楼层
6楼给出的是按G版代码的排序结果。与楼主的要求有出入。
发表于 2013-8-11 09:40:31 | 显示全部楼层
本帖最后由 dwg001 于 2013-8-11 09:50 编辑

;;建筑层数排序,早期也玩过的。  dwg001
(defun c:tt (/ al bl i j l m n)
  (setq l '("-2层" "1层"
     "2层" "16层"
     "3层" "-6层"
     "4-15奇数层"
     "屋面层" "4-15偶数层"
     "17层" "-3层"
     "-1层" "99层"
    )
  )
  (princ "\n原始list=")  (print l)
  (setq m (Vl-sort l '(lambda (a b) (< (atoi a) (atoi b)))))
  (princ "\n一般性排序后list=") (print m)
   (if (setq n (vl-position "屋面层" m))
    (progn
      (setq al '()     bl '()     i  -1     j  n      )
      (repeat n
(setq al (cons (nth (setq i (1+ i)) m) al))
      )
      (repeat (- (length m) n 1)
(setq bl (cons (nth (setq j (1+ j)) m) bl))
      )
      (setq m (append (reverse al) (reverse bl) (list "屋面层")))
    )
    m
  )
  (princ "\n有屋面层排序后list=")  (print m)
  (princ)
)


命令: tt
原始list=
("-2层" "1层" "2层" "16层" "3层" "-6层" "4-15奇数层" "屋面层" "4-15偶数层" "17层" "-3层" "-1层" "99层")
一般排序后list=
("-6层" "-3层" "-2层" "-1层" "屋面层" "1层" "2层" "3层" "4-15奇数层" "4-15偶数层" "16层" "17层" "99层")
有屋面层排序后list=
("-6层" "-3层" "-2层" "-1层" "1层" "2层" "3层" "4-15奇数层" "4-15偶数层" "16层"  "17层" "99层" "屋面层")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:30 , Processed in 0.194830 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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