找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: cz7873559

[求助] 删除字符串中的阿拉伯数字

[复制链接]

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-21 19:21:53 | 显示全部楼层
cz7873559 发表于 2013-6-21 18:58
字符串处理看似简单,实际上可以把我们新手搞晕。如果相减是不是写起更麻烦?

我贴上的函数很简单,从里到外主要三个函数:
vl-string->list :把字符串变成ascii码的列表;
vl-remove->if :去掉表中的数字字符(ascii码48~57);
vl-list-string :将表中剩下的ascii码还原成字符串。
使用应该没有问题的,实在也没有什么好改写的,st所说的是可以简化一些,但不改变原本的性质。
是不是你调用的格式不对,把字符串输入成符号名了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-21 19:28:47 | 显示全部楼层

惊奇的发现,长老用VLISP了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-21 19:38:41 | 显示全部楼层
的确可以删除其中的数,我试了可以的。谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 20:00:47 | 显示全部楼层
谢谢你的解释,但是我不知道怎样去框选文字使他们变化,可能是太笨了,查了一下午的资料都没能实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 20:21:12 | 显示全部楼层
我能理解这三个函数的意思了。现在想把它们变成一段可以使用的程序,该怎样写呢?

点评

这样用  详情 回复 发表于 2013-6-21 21:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-6-21 21:17:29 | 显示全部楼层
本帖最后由 st788796 于 2013-6-21 22:20 编辑
cz7873559 发表于 2013-6-21 20:21
我能理解这三个函数的意思了。现在想把它们变成一段可以使用的程序,该怎样写呢?

这样用
  1. (defun c:tt (/ ss sl i e el str nstr el)
  2.   (if (setq ss (ssget '((0 . "Text")))) ;_选择文字
  3.     (progn
  4.       (setq sl (sslength ss) ;_选择集长度
  5.             i  -1 ;_计数器,指针
  6.       )
  7.       (repeat sl ;_循环选择集
  8.         (setq e           (ssname ss (setq i (1+ i))) ;_逐一取出选择集文字
  9.               el   (entget e) ;_获取文字的 elist
  10.               str  (cdr (assoc 1 el)) ;_取出旧字串
  11.               nstr (vl-list->string
  12.                      (vl-remove-if
  13.                        '(lambda (x) (< 47 x 58))
  14.                        (vl-string->list str)
  15.                      )
  16.                    ) ;_去掉数字后的新字串
  17.               el   (subst (cons 1 nstr) (assoc 1 el) el) ;_替换掉旧字
  18.         )
  19.         (entmod el) ;_修改文字
  20.       )
  21.     )
  22.   )
  23.   (princ)
  24. )

点评

谢谢你的这么详细的注释。  详情 回复 发表于 2013-6-21 22:12
你调试能通过吗?我用起来还是 ; 错误: 参数类型错误: lentityp nil  详情 回复 发表于 2013-6-21 22:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-21 21:28:25 | 显示全部楼层
cz7873559 发表于 2013-6-21 20:00
谢谢你的解释,但是我不知道怎样去框选文字使他们变化,可能是太笨了,查了一下午的资料都没能实现。

听你这样一说,好像离Lisp入门还有一点距离,框选文字让他们变化,还有好几个大的步骤,仅仅一小段代码是远远不够的。
这不是笨不笨的事情,什么事都要有一个过程,都不是一蹴而就的。
如果急用,把使用条件表述清楚,大家会帮你写。
如果不是很急,可以把这个题目就当作你的第一个程序,Lisp基本都是在使用中学习的。
按我对你回帖的理解,程序大致涉及这样几个内容:
1.框选文字ssget
2.文字实体处理ssname、entget
3.实体表变换assoc、(rnum)、subst
4.文字更新entmod
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-21 21:50:41 | 显示全部楼层
学习了,感谢llj:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 22:03:56 | 显示全部楼层
ll_j ,我是初级的。真的很想学好lisp,你已经给我了很多。我几乎还不知道实现步骤。谢谢你的指点!感谢st788796 ,我用你的来慢慢消化~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 22:07:31 | 显示全部楼层

你调试能通过吗?我用起来还是  ; 错误: 参数类型错误: lentityp nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 22:12:13 | 显示全部楼层

谢谢你的这么详细的注释。

点评

输错了 (entget el) 应为 (entget e)  详情 回复 发表于 2013-6-21 22:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-6-21 22:19:45 | 显示全部楼层
cz7873559 发表于 2013-6-21 22:12
谢谢你的这么详细的注释。

输错了 (entget el) 应为 (entget e)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 22:35:37 | 显示全部楼层
嗯。这样改了就完美实现了。谢谢ll_j 和st788796 的无私帮助!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

发表于 2014-7-21 09:13:06 | 显示全部楼层
太给力了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 20:27 , Processed in 0.398008 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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