77077 发表于 2014-7-7 17:08:55

read-line函数出错~

文本文件中如果含有引号"",就会出错.
如文本中有一行是(MJ:ChangeAttributes (list (car (entsel)) (cons "设计" "AA")(cons "名称" "BB")))
读取出来变成"(MJ:ChangeAttributes (list (car (entsel)) (cons \"设计\" \"AA\")(cons \"名称\" \"BB\")))"

如何才能保证不变呢?
;读取txt文本文件,按行组成表
(defun xx-txt2lst (files / out)
(setq file (open files "r"))
(setq out '())
(while (setq a (read-line file))
      (setq out (cons a out))
)
(close file)
(setq out (reverse out))
)



风树 发表于 2014-7-7 17:18:23

一个可能不太好的方法…:
读取出来后再处理该字符串,用空格替换\?
不知道行不行

vectra 发表于 2014-7-7 17:26:31

试试 read 函数

ll_j 发表于 2014-7-7 17:35:07

引号表示字符串的开始和结束,所以如果在字符串中出现引号,则必须使用反斜杠来对其“解释”,否则程序会把字符串从此处分断。
在字符串中出现\"是正确的,虽然显示成这样,但系统不会认错,使用时也才会正确。
你可以通过把这个字符串写回文件进行测试验证。

风树 发表于 2014-7-7 17:49:28

赞同楼上的解释

ll_j 发表于 2014-7-8 08:40:31

77077 测试通过,虽然回显有问题,不过不影响到结果~嘿嘿~
你还没有完全理解,回显是没有问题的,这是特意这样的,你试着把那些反斜杠去掉,看看还是不是一个完整字符串?
页: [1]
查看完整版本: read-line函数出错~