2017-11-29 26 views
0

わかりやすく説明してください。私はアンパサンド文字を含む文字列を持っており、文字参照に置き換える必要があります。"&"を "&"に置き換えてclojure.string/replaceに置き換えます。

(これらはほんの数です)私はそれを試して交換する正規表現パターンの多様性を試してみたが、それらのどれも動作しません:

(s/replace string #"\Q&\E" "&") 
(s/replace string #"\\Q&\\E" "&") 
(s/replace string #"\\&" "&") 
(s/replace string #"&" "&") 
+0

リングコーデックに興味がある可能性があり"bean&cheese"# "&" "&"を置き換えてください)。(0123) "(" clojure.string/replace "ビール&チーズ"# "\ Q&\ E" "&") " " ' – Gary

+0

正規表現以外のバージョンも同様に動作しました '(clojure.string/replace "bean&cheese" "&" "&") – Gary

答えて

3

最も簡単な方法は、ユーザーに文字列/文字列形式です(代わりに正規表現の)置き換える:

(ns tst.demo.core 
    (:require 
    [clojure.string :as str] 
    [ring.util.codec :as codec])) 

(def data "hello & goodbye") 

(str/replace data "&" "&amp") => "hello &amp goodbye" 

をあなたはまた、これらの二つの[ring/ring-codec "1.1.0"]

(codec/url-encode  data) => "hello%20%26%20goodbye" 
(codec/percent-encode data) => "%68%65%6C%6C%6F%20%26%20%67%6F%6F%64%62%79%65" 
(codec/form-encode data) => "hello+%26+goodbye" 
+0

私はそれも試してみました。 (s/replace文字列 "&" "&") REPLでは正常に動作するが、何らかの理由でdefn内で動作しないことに注意してください。編集:心配しないでください、私の部分の構文が間違っています。これは実際に正常に動作します!ありがとう! –

関連する問題