明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4427|回复: 12

文字中间的数字递增替换

[复制链接]
发表于 2012-6-21 14:28:10 | 显示全部楼层 |阅读模式
各位高手们我想求一个LISP程序:
能实现文字中间的数字递增替换,如有很多“第1张”如何连续递增替换为“第2张”“第3张”“第4张”。。。。。。
论坛里只有能实现开头和结尾的数字递增的程序,找了很久都没找到中间数字递增的,望各位好心人帮帮忙,先在这里谢过各位了

点评

http://bbs.mjtd.com/thread-89387-18-1.html  发表于 2012-6-22 09:41
发表于 2012-6-21 16:09:55 | 显示全部楼层
是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊![em0]
 楼主| 发表于 2012-6-22 08:06:12 | 显示全部楼层
zyhandw 发表于 2012-6-21 16:09
是不是用正则表达式或者反应器才能解决啊?可惜还不会,得继续努力学习啊!

我也不知道要不要用反应器啊   , 不过我想应该是先提取文字中的数字,然后改为记忆替换吧,不过不知道怎么编写啊    ,  望各位高手帮帮忙吧。
发表于 2012-6-22 09:28:07 | 显示全部楼层
  1. (defun stradd (str i / n str1 str2 str3 str4)
  2.   (setq n 0)
  3.   (vl-some '(lambda (x / a)
  4.               (if (< 47 x 58)
  5.                 t
  6.                 (setq n        (1+ n)
  7.                       a        nil
  8.                 )
  9.               )
  10.             )
  11.            (VL-STRING->LIST str)
  12.   )
  13.   (setq str1 (substr str 1 n))
  14.   (setq        str2 (substr str (1+ n))
  15.         n    0
  16.   )
  17.   (vl-some '(lambda (x / a)
  18.               (if (or (< x 48) (> x 57))
  19.                 t
  20.                 (setq n        (1+ n)
  21.                       a        nil
  22.                 )
  23.               )
  24.             )
  25.            (VL-STRING->LIST str2)
  26.   )
  27.   (setq str3 (substr str2 1 n))
  28.   (setq str4 (substr str2 (1+ n)))
  29.   (strcat str1 (itoa (+ i (atoi str3))) str4)
  30. )
  31. ;;测试
  32. ( stradd  "第1张" 1)
  33. ==》
  34. "第2张"

点评

超过10000000000时会出错,谢谢了  发表于 2013-11-7 19:22
 楼主| 发表于 2012-6-22 09:41:37 | 显示全部楼层
Gu_xl 发表于 2012-6-22 09:28

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

点评

那就自己检查一下哪个括号不匹配就行了,这些简单的问题完全可以自己解决!  发表于 2012-6-23 08:31
 楼主| 发表于 2012-6-22 10:58:31 | 显示全部楼层
你好,可能你没理解我的意思,我要的是把很多“第1张”替换为“第2张”“第3张”。。不是复制递增啊

点评

起始递增,递增量1  发表于 2012-6-22 11:05
发表于 2012-6-23 08:33:00 | 显示全部楼层
G版都出手了,看看学习一下
 楼主| 发表于 2012-6-25 08:03:32 | 显示全部楼层
阿富汗发货单 发表于 2012-6-22 09:41
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

错误: 参数太少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 22:27 , Processed in 0.189388 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表