seb*_*ebi 6 string replace clojure
如何逃避"*"到"\*"Clojure中?似乎无法让它工作:
(s/replace "A*B" #"*" "*")产生 "A*B"(当然)
(s/replace "A*B" #"*" "\*") 失败: Unsupported escape character: *
(s/replace "A*B" #"*" "\\*")又产生 "A*B"了!
(s/replace "A*B" #"*" "\\\*")失败了:Unsupported escape character: *再次!
(s/replace "A*B" #"\\\\*" "*") 产生 "A\\*B"
我不能让它产生A\*B
任何想法?谢谢
你必须使用4个反斜杠:
> (println (clojure.string/replace "A*B" #"\*" "\\\\*"))
A\*B
nil
>
Run Code Online (Sandbox Code Playgroud)
或者,没有正则表达式,它只是:
> (println (clojure.string/replace "A*B" "*" "\\*"))
A\*B
nil
>
Run Code Online (Sandbox Code Playgroud)
要将其用作正则表达式模式,请使用以下re-pattern函数:
> (def p (clojure.string/replace "A*B" #"\*" "\\\\*"))
#'sandbox17459/p
> (println p)
A\*B
nil
> (clojure.string/replace "BLA*BLA" (re-pattern p) "UH")
"BLUHLA"
>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |