0

ユーザーが入力したテキスト内の URL を検出して置換したい。千の言葉に値する例:

Here's a link to stackoverflow.com, so is http://stackoverflow.com.

=>

Here's a link to [stackoverflow.com](http://stackoverflow.com), so is [http://stackoverflow.com](http://stackoverflow.com).

<a>Google から見つけたのは、URL を検出してタグに変更する方法だけです。URL を検出し、それらをカスタム コード ブロックに置き換えて、上記の例のようなものを生成する方法はありますか? どうもありがとう!

4

1 に答える 1

0

これのトリッキーな部分は、すべての URL に一致する正規表現を見つけることです。たとえば、これはうまくいくかもしれません。

regexp = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/?)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s\`!()\[\]{};:\'\".,<>?«»“”‘’]))/i

正規表現を取得したら、ブロックで gsub を使用します。

text = "Here's a link to stackoverflow.com, so is http://stackoverflow.com."
=> "Here's a link to stackoverflow.com, so is http://stackoverflow.com."
text.gsub(regexp){|url| "FOO#{url}BAR"}
=> "Here's a link to stackoverflow.com, so is FOOhttp://stackoverflow.comBAR."

urlではないため、これはテキストの最初のもの (プロトコルを持たないもの) では何もしないことに注意してください。最初のものも拾うことを期待していた場合、それはあなたにとってはるかに困難になるでしょう.

于 2015-05-20T09:21:43.087 に答える