文字中间的数字递增替换
各位高手们我想求一个LISP程序:能实现文字中间的数字递增替换,如有很多“第1张”如何连续递增替换为“第2张”“第3张”“第4张”。。。。。。
论坛里只有能实现开头和结尾的数字递增的程序,找了很久都没找到中间数字递增的,望各位好心人帮帮忙,先在这里谢过各位了
是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊! zyhandw 发表于 2012-6-21 16:09 static/image/common/back.gif
是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊!
我也不知道要不要用反应器啊 , 不过我想应该是先提取文字中的数字,然后改为记忆替换吧,不过不知道怎么编写啊 ,望各位高手帮帮忙吧。
(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张"
Gu_xl 发表于 2012-6-22 09:28 static/image/common/back.gif
GU _XL版主你好,程序加载后出现“命令: ; 错误: 输入的列表有缺陷”,我是Autocad 2008的 你好,可能你没理解我的意思,我要的是把很多“第1张”替换为“第2张”“第3张”。。不是复制递增啊 G版都出手了,看看学习一下 阿富汗发货单 发表于 2012-6-22 09:41 static/image/common/back.gif
GU _XL版主你好,程序加载后出现“命令: ; 错误: 输入的列表有缺陷”,我是Autocad 2008的
哦 可是试了改括号还是不行啊 也不知道命令是什么啊 yjr111起始递增,递增量1
试了也不行啊 我要的是lisp啊 Gu_xl 发表于 2012-6-22 09:28 static/image/common/back.gif
错误: 参数太少
页:
[1]
2