5

我在 REPL 中进行文本解析,有时想将一堆数据转储到一个字符串中,无论是 bibtex 条目还是一些 EBNF 符号等。通常字符串中可能有引号,而且非常繁琐且容易出错,必须手动转义它们..

是否有另一种方法可以做到这一点,例如 Ruby 的%Q|I可以使用"Quotation Marks"|heredocs?或者是否可以编写一个宏或修改阅读器来启用它?

4

2 回答 2

1

已经有一些关于更健壮的引用语法的讨论,但似乎没有任何更改来支持这一点。

同时,要专门处理您提到的 REPL 交互,您可能会发现这很有用。请注意,它可能不适用于那里的每个 REPL——它们并不是都支持read-line得非常好:

(定义读取行 []
  (->> (反复读行)
       (take-while #(not= % "."))
       (mapcat #(list % "\n"))
       (应用str)))

通过(read-lines)在 REPL 上运行,粘贴您的内容,然后单独添加一行来使用.它:

用户=>(阅读行)
  #_=> 这个“有效”
  #_=> 有时...
  #_=> 。
"这\"有效\"\n有时...\n"
用户=>(打印 *1)
这个“有效”
有时...
零
于 2013-04-26T05:20:17.150 回答
-1

如何简单地使用一个临时文件,将文本转储到其中,然后使用slup. 这样一来,每当您调用它时,一切都会自动转义?

(slurp "tempfile.txt")

或者

(def data (slurp "tempfile.txt"))

或者

(defn rd [] (def data (slurp "tempfile.txt")))
于 2016-02-02T10:09:12.830 回答