如何从字符串Clojure中删除反斜杠\

tru*_*fle 2 string character clojure backslash

我尝试了几种方法,但我仍然无法让它发挥作用.

 (clojure.string/replace "[\"fish\"]" "\\" "")
Run Code Online (Sandbox Code Playgroud)

我希望它是"["fish"]"

我也试过.replaceAll

问题是我不知道如何将\传递给参数.我看过这里建议的答案:

在Clojure中用*替换*

这是指添加\而不是删除,但这对我不起作用

Art*_*ldt 10

无用的简短答案是你无法删除它们,因为它们不会被删除.

让我们逐步评估上面的表达式:

  1. 首先,它将字符串(clojure.string/replace "[\"fish\"]" "\\" "")作为一堆字符读取并将其解析为列表.看起来像(函数名称string1 string2 string3)

    • string1 = ["fish"](请注意,读者没有使用它们)
    • string2 ="\"(再没有额外的\)
    • string3 =""
  2. 然后它通过调用函数来计算该表达式,因为输入不包含\,它只是不改变它.

  3. 然后它以适合读回的格式打印结果.为了使这段代码安全可读,它必须通过在将它们写入屏幕时添加\转义.

在repl我们可以看到这个,如果我们打印人类消耗而不是计算机消耗的输出:

user> "[\"fish\"]"
"[\"fish\"]"
 user> (println "[\"fish\"]")
["fish"]
Run Code Online (Sandbox Code Playgroud)

要么

user> (println (clojure.string/replace "[\"fish\"]" "\\" ""))
["fish"]
Run Code Online (Sandbox Code Playgroud)