我正在使用REPL中的文本解析,有时希望将一堆数据转储成字符串,无论是bibtex条目还是某些EBNF表示法等。通常字符串中可能有引号,不得不手动逃避它们,这非常繁琐且容易出错..
是否有另一种方法可以做到这一点,例如Ruby的%Q|I
可以使用"Quotation Marks"|
或heredocs
等?或者是否可以编写宏或修改阅读器以启用此功能?
答案 0 :(得分:0)
关于更强大的引用语法已经some discussion,但是没有任何更改可以支持这一点。
与此同时,要专门处理您提到的REPL交互,您可能会发现这很有用。请注意,它可能对每个REPL都不起作用 - 它们并非都非常支持read-line
:
(defn read-lines [] (->> (repeatedly read-line) (take-while #(not= % ".")) (mapcat #(list % "\n")) (apply str)))
通过在REPL上运行(read-lines)
,粘贴内容,然后添加一行.
来使用它:
user=> (read-lines) #_=> This "works" #_=> sometimes... #_=> . "This \"works\"\nsometimes...\n" user=> (print *1) This "works" sometimes... nil
答案 1 :(得分:-1)
如何简单地使用转储文本的临时文件,然后使用slup
从那里读取它?这样,只要你打电话,一切都会自动转义?
(slurp "tempfile.txt")
或
(def data (slurp "tempfile.txt"))
或
(defn rd [] (def data (slurp "tempfile.txt")))