0

自分のパターンに一致するテキストを見つけたら、クエリ リンクを持つ RedCloth を使用して外部サイトへのリンクを作成したいと考えています。

次のようなものがある場合:

Text 123 1234 12345

私がそれを置き換えたいと思うとき:

"Text 123 1234 12345":http://site.com/query?value=Text%20123%201234%2012345

スペースをそのままにしておくと、RedCloth はこれをリンクとして正しく認識しません。

これが私がいる場所です:

s = "this is a string which has Text 123 1234 12345 "

s = s.s.gsub(/(Text \d+ \d+ \d+)/,'"\1":http://site.com/query?value=\1'

=> "Text 123 1234 12345":http://site.com/query?value=Text 123 1234 12345"

問題は、RedCloth が次の後に解析を停止することです。

 "Text 123 1234 12345":http://site.com/query?value=Text 

だから私は本当に必要です:

"Text 123 1234 12345":http://site.com/query?value=Text%20123%201234%2012345"

\1次のように、の右側をいじることができる方法はありgsubますか? そうでない場合、これを行う最善の方法は何ですか?

4

1 に答える 1

1

わかりました、Narfanator のコメントのおかげで、「$1 and \1 in Ruby」が見つかりました。

解決策は非常に簡単でした:

s = "this is a string which has Text 123 1234 12345 "
s = s.s.gsub(/(Text \d+ \d+ \d+)/){|x| "\"" + x + "\":https://site.com/query?value=" + CGI::escape(x)}
于 2013-06-02T21:58:26.413 に答える