搜索并更换内部stri
有人知道是否可以在字符串变量中运行查找和替换吗?我有一个字符串变量,其中包含一个连接房间名称、字母和材质的字符串:例如:Master Bath--a--Eos Acadia。
我可以通过“trim”函数从变量中删除空格:
(setq PRINT\u CNC\u TEXT(trim PRINT\u CNC\u TEXT“BMA”))
我还想做的是用一个破折号替换两个破折号。我尝试了以下方法,但没有成功:
(subst'“--”'“-”(“PRINT\u CNC\u TEXT”)
与在图形中运行搜索和替换相比,是否有在变量中执行此操作的方法?
非常感谢。
AJS公司 尝试在图形上运行此选项:
(defun c:repDash(/ ss tStr pos)
(vl-load-com)
(if (setq ss (ssget "X"
(list (cons 0 "TEXT,MTEXT")
(cons 1 "*--*")
(if (getvar "CTAB")
(cons 410 (getvar "CTAB"))
(cons 67 (- 1 (getvar "TILEMODE")))))))
(foreach x(mapcar 'vlax-ename->vla-object
(mapcar 'cadr
(ssnamex ss)))
(setq tStr (vla-get-TextString x))
(while (setq pos (vl-string-search "--" tStr))
(setq tStr (strcat
(substr tStr 1 pos) (chr 45)
(substr tStr (+ pos 3)))))
(vla-put-TextString x tStr))
(princ "\n<!> No Text Found <!>"))
(princ))
(如果(getvar“CTAB”)。。。难道这不应该总是真的吗?有没有办法让“CTAB”为零?
此外,您不能使用(vl string subst)而不是(strcat)吗?
对不起,如果我问了太多问题,我才刚开始进入VLA,就像。。上周。。这对我来说是很新的,我学到了很多,而且很快。 关于使用vl string subst的好主意,有这么多vl函数,有时会忘记一些
(defun c:repDash(/ ss tStr)
(vl-load-com)
(if (setq ss (ssget "X"
(list (cons 0 "TEXT,MTEXT")
(cons 1 "*--*")
(if (getvar "CTAB")
(cons 410 (getvar "CTAB"))
(cons 67 (- 1 (getvar "TILEMODE")))))))
(foreach x(mapcar 'vlax-ename->vla-object
(mapcar 'cadr
(ssnamex ss)))
(setq tStr (vla-get-TextString x))
(while (vl-string-search "--" tStr)
(setq tStr (vl-string-subst "-" "--" tStr)))
(vla-put-TextString x tStr))
(princ "\n<!> No Text Found <!>"))
(princ))
至于CTAB,R14没有。 啊,我明白了。我明白了。。哇,这是一个工作本身,试图使所有向后兼容。我从未使用过R14。。它与2004年或2008年有多大不同?我想它至少应该有VL,但它不会有“ctab”。。。
好的,我想这里不需要IF语句,因为R14也没有VL-我只是将ssget代码作为一组代码,并在需要时复制它。。。以后需要多看一看。 非常感谢你! 没问题,很乐意帮忙
页:
[1]