阿富汗发货单 发表于 2012-6-21 14:28:10

文字中间的数字递增替换

各位高手们我想求一个LISP程序:
能实现文字中间的数字递增替换,如有很多“第1张”如何连续递增替换为“第2张”“第3张”“第4张”。。。。。。
论坛里只有能实现开头和结尾的数字递增的程序,找了很久都没找到中间数字递增的,望各位好心人帮帮忙,先在这里谢过各位了

zyhandw 发表于 2012-6-21 16:09:55

是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊!

阿富汗发货单 发表于 2012-6-22 08:06:12

zyhandw 发表于 2012-6-21 16:09 static/image/common/back.gif
是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊!

我也不知道要不要用反应器啊   , 不过我想应该是先提取文字中的数字,然后改为记忆替换吧,不过不知道怎么编写啊    ,望各位高手帮帮忙吧。

Gu_xl 发表于 2012-6-22 09:28:07


(defun stradd (str i / n str1 str2 str3 str4)
(setq n 0)
(vl-some '(lambda (x / a)
              (if (< 47 x 58)
                t
                (setq n        (1+ n)
                      a        nil
                )
              )
          )
           (VL-STRING->LIST str)
)
(setq str1 (substr str 1 n))
(setq        str2 (substr str (1+ n))
        n    0
)
(vl-some '(lambda (x / a)
              (if (or (< x 48) (> x 57))
                t
                (setq n        (1+ n)
                      a        nil
                )
              )
          )
           (VL-STRING->LIST str2)
)
(setq str3 (substr str2 1 n))
(setq str4 (substr str2 (1+ n)))
(strcat str1 (itoa (+ i (atoi str3))) str4)
)
;;测试
( stradd"第1张" 1)
==》
"第2张"

阿富汗发货单 发表于 2012-6-22 09:41:37

Gu_xl 发表于 2012-6-22 09:28 static/image/common/back.gif


GU _XL版主你好,程序加载后出现“命令: ; 错误: 输入的列表有缺陷”,我是Autocad 2008的

阿富汗发货单 发表于 2012-6-22 10:58:31

你好,可能你没理解我的意思,我要的是把很多“第1张”替换为“第2张”“第3张”。。不是复制递增啊

zyhandw 发表于 2012-6-23 08:33:00

G版都出手了,看看学习一下

阿富汗发货单 发表于 2012-6-25 08:03:32

阿富汗发货单 发表于 2012-6-22 09:41 static/image/common/back.gif
GU _XL版主你好,程序加载后出现“命令: ; 错误: 输入的列表有缺陷”,我是Autocad 2008的

哦   可是试了改括号还是不行啊   也不知道命令是什么啊

阿富汗发货单 发表于 2012-6-25 08:06:33

yjr111起始递增,递增量1

试了也不行啊    我要的是lisp啊

香田里浪人 发表于 2013-7-3 11:32:55

Gu_xl 发表于 2012-6-22 09:28 static/image/common/back.gif


错误: 参数太少
页: [1] 2
查看完整版本: 文字中间的数字递增替换