king、 发表于 2023-5-18 14:46:50

求:固定汉字中间数字求和

如:关键字 (汉字   个)

汉字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:38:39

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

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

本帖最后由 king、 于 2023-5-19 08:47 编辑

vitalgg 发表于 2023-5-18 21:12

(defun c:tt ()
      (sum-in-2str(text:get-mtext(car(entsel))) "汉字" "个")
)

刚测试了下,可以用,感谢!这个是对多行文字有用,如果这几行是单行文字是没办法计算的,是我没表达清楚,能否改一个单行文本可以用的:handshake

king、 发表于 2023-5-19 11:46:47

vitalgg 发表于 2023-5-19 11:38
你把多个单行文本的内容串起来,作为函数的第一个参数即可。

(sum-in-2str (apply 'strcat (mapcar 't ...

测试成,完美,谢谢!:handshake
页: [1]
查看完整版本: 求:固定汉字中间数字求和