5
クロージャで"*"
を"\*"
にエスケープするにはどうすればよいですか?それを動作させるように見えることはできません:Clojureで*を*に置き換える
(s/replace "A*B" #"*" "*")
は(もちろん)
(s/replace "A*B" #"*" "\*")
が失敗した"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"
を生成しますか?
> (println (clojure.string/replace "A*B" #"\*" "\\\\*"))
A\*B
nil
>
または、正規表現なしに、それは単にです:
> (println (clojure.string/replace "A*B" "*" "\\*"))
A\*B
nil
>
re-pattern
機能を使用し、正規表現パターンとしてこれを使用するには感謝
結果: ユーザー=>(clojure.string/"A * B"# "\ *" "\\\\ *"を置換) "A \\ * B" ユーザー=>(clojure.string/replace "A * B" "*" "\\ *") "A \\ * B" 結果を正規表現で使用する必要があります。私はそれを印刷したくない。 – sebi
@sebi私の答えを更新しました。 – sloth
"BLA * BLA"を "BLA \\ * BLA"(この正確な文字列)に置き換えます。残念ながら、あなたが私に与えた例はうまくいきません.... – sebi