次のようなタグがいくつか付いたテキストがあるとします。
[twitter:jpunt]
それらを次のようなものに置き換えたいと思います。
<a href="http://twitter.com/jpunt">@Jpunt</a>
Rubyでこれを行うにはどうすればよいですか?私は数時間正規表現を研究してきましたが、結果として多くの欲求不満が生じました。誰?
これは仕事をするはずです:
initial = "[twitter:jpunt]"
link = initial.gsub(/\[twitter:(\w+)\]/i, '<a href="http://twitter.com/\1">@\1</a>')
これは1行のコードです(このコードをテストするには、ここをクリックしてください)>>
output = input.gsub(/\[([^:]+):([^\]]+)\]/) {
'<a href="http://' + $1 + '.com/' + $2 + '">@' + $2.capitalize + '</a>' }
上記のコードは、任意のタグ名で機能します。Twitterだけを許可したい場合は、変更を加えてください。
output = input.gsub(/\[twitter:([^\]]+)\]/) {
'<a href="http://twitter.com/' + $1 + '">@' + $1.capitalize + '</a>' }