本帖最后由 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
|