中文数字排序。
本帖最后由 vitalgg 于 2023-3-24 18:09 编辑感谢kkq0305 提供思路。
http://bbs.mjtd.com/thread-187438-1-1.html
在 CAD 中已安装 @lisp 的 ,请先运行 (@:updatelib) 更新函数库。
(defun string:sort-by-number (lst-str)
"按数字排序字符串\n在夹杂数字时,如果数字前后的字符串相同,按数字大小排序"
"排序后的字符串表"
"(string:sort-by-number '(\"a5\" \"a1\"\"a8\"\"b2\"\"b1\"\"a110\"\"a13\"))"
(vl-sort lst-str
(quote (lambda (x y)
(apply (quote or)
(mapcar (quote (lambda (a b)
(cond ((and (string:intp a)
(string:intp b))
(< (atoi a)
(atoi b)))
((and (string:realp a)
(string:realp b))
(< (atof a)
(atof b)))
((and (string:hannumberp a)
(string:hannumberp b))
(< (string:hannumber2number a)
(string:hannumber2number b)))
(t (< a b)))))
(string:auto-split x)
(string:auto-split y)))))))
所有含有 : 冒号的函数,均为 @lisp 函数库中定义的函数。
全部源码:
https://gitee.com/atlisp/atlisp-lib
这个看起来真不错
页:
[1]