找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1729|回复: 17

[编程申请]:■可否实现以下字符串查找功能■

[复制链接]
发表于 2006-5-12 09:33:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
可否编个程序实现以下功能:输入字符串“ABC”后,程序可以在图中查找“ABC-01”,若找不到则返回信息“无ABC-01”,若找n个“ABC-01”后则继续查找“ABC-02”,找不到“ABC-02”则返回“ABC-01共n个”,若找m个“ABC-02”后则继续查找“ABC-03”,找不到“ABC-03”则返回“ABC-01共n个,ABC-02共m个”,依次类推。大家帮出出主意。           实在不行,实现以下功能也可:输入字符串“ABC”后,程序可以在图中查找“ABC-01”,若找不到则返回信息“无ABC-01”,若找“ABC-01”后则继续查找“ABC-02”,找不到“ABC-02”则返回“最后一个序号为ABC-01”,若找则继续查找“ABC-03”,找不到“ABC-03”则返回“最后一个序号为ABC-02”,依次类推。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 10:19:15 | 显示全部楼层

  1. (defun c:tt (/ pre num i str ss)
  2.   (setq pre (getstring "\n输入前缀字符: "))
  3.   (setq num (getint "\n输入查找最大数字: "))
  4.   (if (and num (/= pre ""))
  5.     (progn
  6.       (setq i 1)
  7.       (repeat num
  8.         (if (< i 10)
  9.           (setq str (strcat pre "0" (itoa i)))
  10.           (setq str (strcat pre (itoa i)))
  11.         )
  12.         (if (setq ss (ssget "x" (list (cons 1 str))))
  13.           (princ
  14.             (strcat "\n" str " " "共 " (itoa (sslength ss)) " 个")
  15.           )
  16.           (princ (strcat "\n无 " str))
  17.         )
  18.         (setq i (1+ i))
  19.       )
  20.     )
  21.   )
  22.   (princ)
  23. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 10:26:34 | 显示全部楼层
找到后返回类似“最后一个序号为ABC-02”这样的信息就成
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 10:51:47 | 显示全部楼层

  1. (defun c:tt (/ pre ss ssl i pos num e el str gbnum)
  2.   (setq pre (getstring "\n输入前缀字符: "))
  3.   (if (and (/= pre "")
  4.            (setq
  5.              ss        (ssget "X"
  6.                        (list (cons 1
  7.                                    (strcat pre           "#,"           pre
  8.                                            "##,"   pre           "###,"
  9.                                            pre           "####," pre
  10.                                            "#####"
  11.                                           )
  12.                              )
  13.                        )
  14.                 )
  15.            )
  16.       )
  17.     (progn
  18.       (setq ssl        (sslength ss)
  19.             i        -1
  20.             pos        (1+ (strlen pre))
  21.       )
  22.       (repeat ssl
  23.         (setq e          (ssname ss (setq i (1+ i)))
  24.               el  (entget e)
  25.               str (cdr (assoc 1 el))
  26.               num (atoi (substr str pos))
  27.         )
  28.         (if (not gbnum)
  29.           (setq gbnum num)
  30.           (if (> num gbnum)
  31.             (setq gbnum num)
  32.           )
  33.         )
  34.       )
  35.       (if gbnum
  36.         (alert (strcat "\n最后一个序号为 " pre (itoa gbnum))))
  37.     )
  38.   )
  39.   (princ)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 11:53:15 | 显示全部楼层
eachy高人啊!我已受益于你好多程序了。您可能误解了我的意思 我是说 输入字符串“ABC”后,程序可以在图中查找“ABC-01”,若找不到则返回信息“无ABC-01”,若找n个“ABC-01”后则继续自动(也就是命令继续执行)查找“ABC-02”,找不到“ABC-02”则返回“ABC-01共n个”,若找m个“ABC-02”后则自动(也就是命令继续执行)继续查找“ABC-03”,找不到“ABC-03”则返回“ABC-01共n个,ABC-02共m个”,依次类推。另外,这两个程序不支持当ABC是数字时的情况,能不能一并解决呢?要求越来越高了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 12:12:26 | 显示全部楼层
这个和图块数量统计是一个道理,以前的帖子有这种代码,前缀要输完全,如 ABC-

  1. (defun c:tt (/ pre ss ssl i pos e el str strlst sl)
  2.   (setq pre (getstring "\n输入前缀字符: "))
  3.   (if (and (/= pre "")
  4.            (setq
  5.              ss        (ssget "X"
  6.                        (list (cons 1
  7.                                    (strcat pre           "#,"           pre
  8.                                            "##,"   pre           "###,"
  9.                                            pre           "####," pre
  10.                                            "#####"
  11.                                           )
  12.                              )
  13.                        )
  14.                 )
  15.            )
  16.       )
  17.     (progn
  18.       (setq ssl        (sslength ss)
  19.             i        -1
  20.             pos        (1+ (strlen pre))
  21.       )
  22.       (repeat ssl
  23.         (setq e          (ssname ss (setq i (1+ i)))
  24.               el  (entget e)
  25.               str (cdr (assoc 1 el))
  26.         )
  27.         (if (setq sl (assoc str strlst))
  28.           (setq strlst (subst (cons str (1+ (cdr sl))) sl strlst))
  29.           (if strlst
  30.             (setq strlst (append (list (cons str 1)) strlst))
  31.             (setq strlst (list (cons str 1)))
  32.           )
  33.         )
  34.       )
  35.       (foreach i strlst
  36.         (princ (strcat "\n" (car i) " 共 " (itoa (cdr i)) " 个"))
  37.       )
  38.     )
  39.   )
  40.   (princ)
  41. )

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

使用道具 举报

 楼主| 发表于 2006-5-12 13:47:36 | 显示全部楼层
效果巨好,非常感谢!对于属性块儿里面的文字没有办法查找,是吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 14:45:29 | 显示全部楼层
最初由 madman 发布
[B]效果巨好,非常感谢!对于属性块儿里面的文字没有办法查找,是吗? [/B]

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

使用道具 举报

 楼主| 发表于 2006-5-12 14:52:50 | 显示全部楼层
您这个程序对于出现在属性块文字内的满足要求的字符串搜寻不到,是吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 22:04:53 | 显示全部楼层
最初由 madman 发布
[B]您这个程序对于出现在属性块文字内的满足要求的字符串搜寻不到,是吗? [/B]

你首先要知道属性是“属于”块的实体,选择只能对父实体,不能直接选择“子实体”,不能选择不代表不能处理。只要有处理条件就可以“搜索”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 22:50:22 | 显示全部楼层
eachy 您好 能不能找个简单的例子说明一下如何搜寻属性块内的文字呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-12 23:01:45 | 显示全部楼层
最初由 madman 发布
[B]eachy 您好 能不能找个简单的例子说明一下如何搜寻属性块内的文字呢 [/B]

首先属性块是可以用 SSGET 选择出来的(如果知道块名就更好办),属于块的属性可以依次取出来。既然定义属性,标签名称应该是和要统计的文字含义有关系的,这样属性才有其意义。

获取属性块的全部属性实体的方法有很多现成的代码。

http://www.google.com/search?q=v ... -CN&newwindow=1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-5-14 18:41:19 | 显示全部楼层
请问eachy使用语句(strcat pre"#,"pre"##,"pre"###,"pre"####," pre "#####")是什么作用?似乎这个程序当后缀长了后就不能查到字符串了。这个程序是统计前缀字符串的文字,能否搞个对凡是包括指定字符串的文本的统计程序呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-14 18:55:27 | 显示全部楼层
# 匹配任意单个数字, ## 匹配两个数字,依次类推。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 15:03 , Processed in 0.211135 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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