2017-10-05 7 views
0

私はREPLでこれを試してみましたreturnubyとなります。Clojureの '\ r' が

私は\rが特別だと知っています。

cljファイルで\rubyを取得するにはどうすればよいですか?なぜREPLで\ruby = \ruby

答えて

2

(clojure.string/replace s match replacement)ドキュメントでは、置換はリテラルであり、文字列内で特別に扱われる文字はありませんが、$1$2程度です。

交換品をそのまま使用する場合は、(clojure.string/re-quote-replacement r)を使用して交換してください。あなたがその機能を確認した場合しかし、それはバックスペース用の4つのバックスペースを生成します。

(clojure.string/replace "abc<def>" #"(\w+)<(\w+)>" "\\\\ruby{$1}{$2}") ;;=> "\\ruby{abc}{def}" 
+0

それは動作します:

(clojure.string/re-quote-replacement \\) ;;=> "\\\\" 

だから、それゆえ\\\\作業をする必要があり、そのバックスラッシュをエスケープする必要がありそうです。今私は出力に1つの\を取得します。ありがとう。 –

+0

それでは、私の答え@avalan_cheを受け入れてみませんか? –

+0

申し訳ありませんが、忘れました - あなたの答えをテストするのを待つことができませんでした。 –