ajs 发表于 2022-7-6 14:40:25

搜索并更换内部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公司

Lee Mac 发表于 2022-7-6 14:49:51

尝试在图形上运行此选项:
 

(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))

Freerefill 发表于 2022-7-6 14:58:13

(如果(getvar“CTAB”)。。。难道这不应该总是真的吗?有没有办法让“CTAB”为零?
 
此外,您不能使用(vl string subst)而不是(strcat)吗?
 
对不起,如果我问了太多问题,我才刚开始进入VLA,就像。。上周。。这对我来说是很新的,我学到了很多,而且很快。

Lee Mac 发表于 2022-7-6 15:14:18

关于使用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没有。

Freerefill 发表于 2022-7-6 15:15:14

啊,我明白了。我明白了。。哇,这是一个工作本身,试图使所有向后兼容。我从未使用过R14。。它与2004年或2008年有多大不同?我想它至少应该有VL,但它不会有“ctab”。。。

Lee Mac 发表于 2022-7-6 15:25:06

 
好的,我想这里不需要IF语句,因为R14也没有VL-我只是将ssget代码作为一组代码,并在需要时复制它。。。以后需要多看一看。

ajs 发表于 2022-7-6 15:39:20

非常感谢你!

Lee Mac 发表于 2022-7-6 15:46:21

没问题,很乐意帮忙
页: [1]
查看完整版本: 搜索并更换内部stri