我尝试了几种方法,但我仍然无法让它发挥作用。
(clojure.string/replace "[\"fish\"]" "\\" "")
我希望它是“[”fish“]”
我也尝试过.replaceAll
问题是我不知道如何将\传递给参数。我看过这里建议的答案:
Replacing * with \* in Clojure
指的是添加\而不是删除,但这对我不起作用
答案 0 :(得分:10)
无用的简短答案是你无法删除它们,因为它们不会被删除。
让我们逐步评估上面的表达式:
首先它将字符串(clojure.string/replace "[\"fish\"]" "\\" "")
作为一堆字符读取并将其解析为列表。看起来像(function-name string1 string2 string3)
然后它通过调用函数来计算该表达式,因为输入不包含\,它只是不改变它。
user> "[\"fish\"]"
"[\"fish\"]"
user> (println "[\"fish\"]")
["fish"]
或
user> (println (clojure.string/replace "[\"fish\"]" "\\" ""))
["fish"]
答案 1 :(得分:2)
"[\"fish\"]"
" [" fish"]"
报价为escaped。如果你的字符串字面意思是" [\" fish \"]",它看起来像"[\\\"fish\\\"]"
。
在那种情况下
> (clojure.string/replace "[\\\"fish\\\"]" #"\\" "")
"[\"fish\"]"
答案 2 :(得分:0)
我无法理解你想要的结果是什么,但如果你试图解析给定的字符串并期望你的输出是一个向量,那么你可以使用clojure的Cheshire来解析字符串像这样:
(vec(cheshire.core / parse-string" [\" fish \"]")))
- > ["鱼"]
如果您想要一个简单的字符串结果,那么您可以使用上述答案/解决方案。