转义字符串
你好我需要转义双引号字符。
我读取属性,将值写入文件。这些值需要在文件中转义。
----
所以,我需要的应该是这样的,只是这不起作用:
(princ (replace "\"" "\\\"" attribute_value))
;; http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/using-vl-string-subst-to-do-a-find-and-replace-in-external-file/td-p/3732910
(defun replace (newstr oldstr str / localstr)
(setq localstr str)
(while (vl-string-search oldstr localstr)
(setq localstr (vl-string-subst newstr oldstr localstr))
(replace newstr oldstr localstr)
)
localstr
)
我不是第一个需要这个的人。 也许函数READ就是你想要的? 谢谢,但不是这样。
这正是我所需要的。
因此,我有一个具有属性(tag=TFT)的块,值是32“(如32英寸)。我读取块并将数据写入文件。
这是我在文本文件中找到的内容:
(“TFT”“32”)
我需要在我的文本文件中:
(“TFT”“32”) 像这样试试,让我知道。
(if (wcmatch (setq st "32\"") "*\"")
(strcat (substr st 1 (1- (strlen st))) (chr 92) (chr 34))
)
请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。
好的,但我只是给了你一个例子。它的格式并不总是这样(不总是在字符串的末尾,也不总是32)。它需要在任何地方替换任何双引号。
这应该只是一个简单的字符串替换。我不明白为什么这么难 我也给了你们一个例子
如果你感兴趣,那就容易多了。
(defun _add:slash (st)
(if (wcmatch st "*\"")
(strcat (substr st 1 (1- (strlen st))) (chr 92) (chr 34))
)
)
函数的使用。
(_add:slash "32\"")
我理解你函数的方式:
-它查找以“”结尾的字符串;
-然后将其替换为除最后一个字符外的字符串。
-然后它向字符串中添加\”。
------
无论如何,我的文件中仍然没有\号。
显然,wcmatch永远不会返回true。
(我在你的函数中放了一个princ(我添加了progn),用于调试;未打印任何内容
也许需要搜索“不同的” 我之前发布的函数运行良好,无论如何,请显示您的代码以检查它们。 我明天再谈。我将制作一个脚本的最小版本,带有一个最小版本的dwg附件。
也许问题出在代码的前面;一些转换/过滤/的函数。。。差不多吧。
页:
[1]
2