我在解析REPL中的文本,並且有時想將一堆數據轉儲到字符串中,無論是bibtex條目還是某些EBNF表示法等。通常,字符串中可能會有引號,並且這是非常繁瑣和容易出錯的有手動逃脫他們..輕鬆處理文本而無需在Clojure中引號?
是否有這樣做的另一種方式,比如Ruby的%Q|I
可以使用"Quotation Marks"|
或heredocs
等?或者是否可以寫一個宏或修改閱讀器來啓用它?
我在解析REPL中的文本,並且有時想將一堆數據轉儲到字符串中,無論是bibtex條目還是某些EBNF表示法等。通常,字符串中可能會有引號,並且這是非常繁瑣和容易出錯的有手動逃脫他們..輕鬆處理文本而無需在Clojure中引號?
是否有這樣做的另一種方式,比如Ruby的%Q|I
可以使用"Quotation Marks"|
或heredocs
等?或者是否可以寫一個宏或修改閱讀器來啓用它?
關於更強大的引用語法,有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
如何簡單地使用你傾倒入您的文本,然後從那裏使用slup
閱讀一個臨時文件?這樣,每當你打電話時,一切都會自動逃脫?
(slurp "tempfile.txt")
或
(def data (slurp "tempfile.txt"))
或
(defn rd [] (def data (slurp "tempfile.txt")))
這是我一直想太多。解決數據問題的一種方法是使用'slurp'從文件中讀取數據。 – DaoWen 2013-04-20 01:10:41
您是在運行時代碼還是編輯器中「傾銷」?如果以後,看到這個問題:http://stackoverflow.com/questions/11043318/does-clojure-have-raw-string – noahlz 2013-04-20 09:47:38
你在用什麼編輯器?我通常的做法是使用一個帶有智能粘貼功能的編輯器,爲我添加逃脫功能。 – Korny 2016-07-17 06:58:43