明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: jaminth

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

[复制链接]
发表于 2013-8-11 14:53:10 | 显示全部楼层
不对"4-15奇数层" "4-15偶数层"反了哟!
发表于 2013-8-11 15:15:02 | 显示全部楼层
dwg001 发表于 2013-8-11 09:40
;;建筑层数排序,早期也玩过的。  dwg001
(defun c:tt (/ al bl i j l m n)
  (setq l '("-2层" "1层"

排序有问题哟,4-15偶数层 在前!
发表于 2013-8-11 17:18:12 | 显示全部楼层
此題"4-15偶數層"應該在"4-15奇數層"之前
這類排序不具通用性,屋頂層、地下層、甚至地面層常有不同表示方式,建議有樓層表可對照排序
发表于 2013-8-11 17:52:03 | 显示全部楼层
q3_2006 发表于 2013-8-11 15:15
排序有问题哟,4-15偶数层 在前!

;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"

(foreach x m
      (if  (wcmatch x   "*奇数层")  (progn
                                                  (setq jsch x  jscwz (vl-position x m))
                                                  (setq y (vl-string-right-trim "奇数层" x))
                                                  (setq nn (vl-string-position (ascii "-") y))
                                                  (setq str-q (read (substr y 1 nn)))
  (if (zerop (rem str-q 2.0))  
     (progn
       (setq cl '() dl '()  k -1      r (1+ jscwz) )
       (repeat jscwz
        (setq cl (cons (nth (setq k (1+ k)) m) cl))
      )
       (repeat (- (length m) jscwz 2)
        (setq dl (cons (nth (setq r (+ 1 r)) m) dl))
      )
    (setq m (append (reverse cl) (list (strcat y "偶数层"))  (list (strcat y "奇数层"))   (reverse dl) ))
      )
    )      )    )      )

命令: tt
原始list=("-2层" "1层" "2层" "16层" "3层" "-6层" "4-15奇数层" "屋面层"
"4-15偶数层" "17层" "-3层" "-1层" "99层" "43-50奇数层" "43-50偶数层")
排序list=("-6层" "-3层" "-2层" "-1层" "1层" "2层" "3层" "4-15偶数层"
"4-15奇数层" "16层" "17层" "43-50奇数层" "43-50偶数层" "99层" "屋面层")
发表于 2013-8-11 18:21:38 | 显示全部楼层
dwg001 发表于 2013-8-11 17:52
;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"

(for ...

明白了,谢谢高人指点!
 楼主| 发表于 2013-8-11 20:08:34 | 显示全部楼层
谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后面(< (atoi a) (atoi b))还不是怎么理解atoi?
发表于 2013-8-12 12:58:44 | 显示全部楼层
jaminth 发表于 2013-8-11 20:08
谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后 ...

取整按升序重排!
 楼主| 发表于 2013-8-12 20:57:43 | 显示全部楼层
谢谢楼上!
发表于 2013-8-13 06:58:57 | 显示全部楼层
不错,支持10楼
发表于 2013-8-14 09:14:42 | 显示全部楼层
这样的程序没有通用性,应该考虑将层的说法上再规范一些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 12:45 , Processed in 0.160422 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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