clojure 1.8字符串替换为具有' \\ r'

时间:2017-10-05 06:59:36

标签: clojure

我在REPL中试过这个:

enter image description here

当我将这两行放在clj文件中时,android:windowSoftInputMode="adjustPan"会提供\\ruby,但ruby会提供\rubyreturn

我知道uby很特别。

如何在clj文件中获取\r?为什么在REPL \ruby = \ruby

1 个答案:

答案 0 :(得分:2)

(clojure.string/replace s match replacement)文档说明替换是文字的,没有字符在字符串中特别处理,但$1 $2等等。

如果您希望使用替换原样,则可以使用(clojure.string/re-quote-replacement r)来引用它。但是如果你检查那个函数,它会为退格产生4个退格:

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

因此似乎应该对反斜杠进行转义,因此\\\\应该有效:

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