明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 587|回复: 1

[函数] 中文数字排序。

[复制链接]
发表于 2023-3-24 17:47:52 | 显示全部楼层 |阅读模式
本帖最后由 vitalgg 于 2023-3-24 18:09 编辑



感谢  kkq0305 提供思路。
http://bbs.mjtd.com/thread-187438-1-1.html

在 CAD 中已安装 @lisp 的 ,请先运行 (@:updatelib) 更新函数库。

  1. (defun string:sort-by-number (lst-str)
  2.   "按数字排序字符串\n在夹杂数字时,如果数字前后的字符串相同,按数字大小排序"
  3.   "排序后的字符串表"
  4.   "(string:sort-by-number '(\"a5\" \"a1\"  \"a8\"  \"b2\"  \"b1\"  \"a110\"  \"a13\"))"
  5.   (vl-sort lst-str
  6.      (quote (lambda (x y)
  7.         (apply (quote or)
  8.          (mapcar (quote (lambda (a b)
  9.               (cond ((and (string:intp a)
  10.               (string:intp b))
  11.                (< (atoi a)
  12.                   (atoi b)))
  13.               ((and (string:realp a)
  14.               (string:realp b))
  15.                (< (atof a)
  16.                   (atof b)))
  17.               ((and (string:hannumberp a)
  18.               (string:hannumberp b))
  19.                (< (string:hannumber2number a)
  20.                   (string:hannumber2number b)))
  21.               (t (< a b)))))
  22.            (string:auto-split x)
  23.            (string:auto-split y)))))))


所有含有 : 冒号的函数,均为 @lisp 函数库中定义的函数。

全部源码:
https://gitee.com/atlisp/atlisp-lib



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-24 19:24:28 | 显示全部楼层
这个看起来真不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:47 , Processed in 0.167414 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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