2017-10-05 4 views
0

'\\ R'가있는 문자열로 대체 Clojure의 :1.8 문자열 내가 REPL이 시도

enter image description here

을하고 난 CLJ 파일이 2 개 라인을 넣을 때, \\rubyruby을 제공하지만, \rubyreturnuby을 제공합니다.

나는 \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 \\) ;;=> "\\\\" 

그래서 따라서 \\\\ 작동합니다, 그 백 슬래시 이스케이프 해봐야 할 것 같습니다. 이제 출력에 \을 하나 얻습니다. 감사. –

+0

그럼 왜 내 대답을 받아들이지 않니? –

+0

죄송합니다. 깜빡했는데 답변을 테스트하기 위해 기다릴 수 없습니다. –