求:固定汉字中间数字求和
如:关键字 (汉字 个)汉字10个,abc123汉字
汉字10个,汉字123汉字
汉字10个,aaa123
汉字10个aaa123
汉字10个aaa123汉字10个
AAA汉字10.5个aaa123汉字10.5个BBB
汉字汉字20个aaa123汉字10个个
汉字汉字10个个aaa123汉字汉字20个个
求和结果:141
本帖最后由 vitalgg 于 2023-5-19 11:40 编辑
king、 发表于 2023-5-19 08:46
(defun c:tt ()
(sum-in-2str(text:get-mtext(car(entsel))) "汉字" "个")
)
你把多个单行文本的内容串起来,作为函数的第一个参数即可。
(sum-in-2str (apply 'strcat (mapcar 'text:get-mtext (pickset:to-list (ssget '((0 . "*text"))))))"汉字" "个")
本帖最后由 vitalgg 于 2023-5-18 21:16 编辑
(defun sum-in-2str (str pre post)
"对字符串str内 pre 和 post 之的数字求和"
"number"
(setq lst (string:auto-split str))
(setq pre-str (car lst))
(setq sum 0)
(while (setq lst (cdr lst))
(if(and
(apply 'and (mapcar '= (reverse (string:s2l-ansi pre-str))
(reverse (string:s2l-ansi pre))))
(string:numberp (car lst))
(apply 'and (mapcar '= (string:s2l-ansi (cadr lst))
(string:s2l-ansi post))))
(setq sum (+ sum (read (car lst)))))
(setq pre-str (car lst)))
sum)
本帖最后由 king、 于 2023-5-19 08:47 编辑
vitalgg 发表于 2023-5-18 21:12
(defun c:tt ()
(sum-in-2str(text:get-mtext(car(entsel))) "汉字" "个")
)
刚测试了下,可以用,感谢!这个是对多行文字有用,如果这几行是单行文字是没办法计算的,是我没表达清楚,能否改一个单行文本可以用的:handshake vitalgg 发表于 2023-5-19 11:38
你把多个单行文本的内容串起来,作为函数的第一个参数即可。
(sum-in-2str (apply 'strcat (mapcar 't ...
测试成,完美,谢谢!:handshake
页:
[1]