乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 7

[编程交流] 如何在文本中使用通配符

[复制链接]

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 23:13:18 | 显示全部楼层 |阅读模式
  1. (if (= (strcase txt) "AC")
  2.    (setq txt "PV")
  3. )

 
当点的原始描述与AC匹配时,这将设置PV的文本实体。我的问题是,只有当文本字符串逐字匹配时,这才有效。有没有办法用这个词,这样我就可以使用通配符了。。例如,任何包含AC set txt的文本字符串都等于PV。
 
示例ED AC、AC GB、AC等,这些都需要等于PV
 
我正在使用Autocad Landdesktop 2006,我不太擅长这个lisp的东西,如果有任何帮助,将不胜感激。
回复

使用道具 举报

2

主题

47

帖子

45

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:26:15 | 显示全部楼层
大概
 
  1. (setq txt "externalgboundary") ;; this one contains GB
  2. (setq txt (if (wcmatch (strcase txt) "*ED*,*AC*,*GB*") "PV" txt))
  3. "PV"

 
但是等待Lisp程序大师。。。同时看看“wcmatch”
 
HTH公司
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-5 23:34:26 | 显示全部楼层
看看wcmatch函数
 
(如果(wcmatch(strcase txt)“*AC*”)
...
 
哎呀,和上面乐的帖子一样
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-5 23:40:59 | 显示全部楼层
 
如果你知道正则表达式(grep),你会没事的。如前所述,wcmatch函数是最好的选择,但正则表达式风格的表达式可以在选择集中使用
 
奥利
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:53:24 | 显示全部楼层
 
但你已经到了。。。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-5 23:57:58 | 显示全部楼层
再一个:
  1. (if (vl-string-search "AC" (strcase txt))
  2.    (setq txt "PV")
  3. )
回复

使用道具 举报

0

主题

5

帖子

5

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:10:25 | 显示全部楼层
我不熟悉lisp例程,尝试在lisp中使用通配符重命名一堆文本样式名称,并更改其中的一个常见部分(类似于查找和替换,但无法使其工作。也许我做错了什么?
 
例如,我有文本样式名称,例如:
T10206-UC07-P0ZEN-110001-R7A-WIP$0$\u HZTXT
T10206-UC07-P0ZEN-110001-R7A-WIP$0$ARIAL
T10206-UC07-P0ZEN-110001-R7A-WIP$0$GHS
T10206-UC07-P0ZEN-110001-R7A-WIP$0$HG
 
我想删除“T10206-UC07-P0ZEN-110001-R7A-WIP$0$”
_HZTXT公司
宋体
全球统一制度

 
或者至少把这个单词改成有意义的单词,比如“Old”
Old_HZTXT
旧宋体
旧GHS
旧HG
这是我到目前为止写的(好吧,这可能看起来很愚蠢……但正如我告诉你的那样,我对lisps是新手):
 
(setq txtStyleName(tblobjname“style”(if(wcmatch(strcase txt)“T10206-UC07-P0ZEN-110001-R7A-WIP$0$*”))
(如果(/=txtStyleName nil)
(命令“-RENAME”“Style”“txtStyleName”“))

 
(setq txtStyleName(tblobjname“style”(if(wcmatch(strcase txt)“T10206-UC07-P0ZEN-110001-R7A-WIP$0$*”))
(如果(/=txtStyleName nil)
(命令“-RENAME”“Style”“txtStyleName”“Old”))
 
但这些都不管用扭曲的:
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:14:16 | 显示全部楼层
也许是这样
  1. (while (setq St (tblnext "STYLE" (null St)))
  2. (setq StLst (cons (strcase (cdr (assoc 2 St))) StLst))
  3. );; while
  4. (foreach st StLst
  5. (if (wcmatch st "T10206-UC07-P0ZEN-110001-R7A-WIP$0$*")
  6.    (progn
  7.      (setq i 0)
  8.      (while (setq pos (vl-string-search "$" st i))
  9. (setq i (1+ pos))
  10.      );; while
  11.      (setq newst (substr st (1+ i)))
  12.      (command "-RENAME" "Style" st (strcat "Old " newst))
  13.    );; progn
  14. );; if
  15. );; foreach

 
HTH公司
亨里克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:11 , Processed in 2.848008 second(s), 79 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表