如何在文本中使用通配符
(if (= (strcase txt) "AC")
(setq txt "PV")
)
当点的原始描述与AC匹配时,这将设置PV的文本实体。我的问题是,只有当文本字符串逐字匹配时,这才有效。有没有办法用这个词,这样我就可以使用通配符了。。例如,任何包含AC set txt的文本字符串都等于PV。
示例ED AC、AC GB、AC等,这些都需要等于PV
我正在使用Autocad Landdesktop 2006,我不太擅长这个lisp的东西,如果有任何帮助,将不胜感激。 大概
(setq txt "externalgboundary") ;; this one contains GB
(setq txt (if (wcmatch (strcase txt) "*ED*,*AC*,*GB*") "PV" txt))
"PV"
但是等待Lisp程序大师。。。同时看看“wcmatch”
HTH公司 看看wcmatch函数
(如果(wcmatch(strcase txt)“*AC*”)
...
哎呀,和上面乐的帖子一样
如果你知道正则表达式(grep),你会没事的。如前所述,wcmatch函数是最好的选择,但正则表达式风格的表达式可以在选择集中使用
奥利
但你已经到了。。。 再一个:
(if (vl-string-search "AC" (strcase txt))
(setq txt "PV")
) 我不熟悉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”))
但这些都不管用扭曲的: 也许是这样
(while (setq St (tblnext "STYLE" (null St)))
(setq StLst (cons (strcase (cdr (assoc 2 St))) StLst))
);; while
(foreach st StLst
(if (wcmatch st "T10206-UC07-P0ZEN-110001-R7A-WIP$0$*")
(progn
(setq i 0)
(while (setq pos (vl-string-search "$" st i))
(setq i (1+ pos))
);; while
(setq newst (substr st (1+ i)))
(command "-RENAME" "Style" st (strcat "Old " newst))
);; progn
);; if
);; foreach
HTH公司
亨里克
页:
[1]