- PR -

ASP.Netで文字列中のURLに自動でリンクを張ることはできますか??

投稿者投稿内容
gucciさん
会議室デビュー日: 2008/04/03
投稿数: 5
投稿日時: 2008-04-04 15:18
正規表現で検索し、「https?://」で始まって、空白で終わっているところを、「<a href="マッチした文字列">マッチした文字列</a>」と置き換えるプログラムを

Dim re As New Regex("s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+", RegexOptions.IgnoreCase Or RegexOptions.Singleline)
Dim m As Match = re.Match(txtBody.Text)
While m.Success
txtBody.Text = re.Replace(txtBody.Text, "<a href=" + m.ToString + ">" + m.ToString + "</a>")

m = m.NextMatch()
End While
と書くことでフォーム内に
http://・・・
が一つある場合には上手くできまましたが
フォームに

あああ
http://aaa.com
いいい
http://bbb.com

Http://で始まるURLが複数ある場合には
フォーム後に結果は
あああ
http://bbb.com>http://bbb.com
いいい
http://bbb.com>http://bbb.com
と表示されうまくできません。
複数URLがフォーム内にある場合はどうしたら良いのでしょうか?
どなたかご教授お願いいたします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-04-04 15:55
引用:

gucciさんさんの書き込み (2008-04-04 15:18) より:
空白で終わっているところを


その正規表現が正しいか?はともかくとして、
「空白で終わっているところを」なので、とりあえず最後に空白を入れてみてはどうでしょう?
未記入
会議室デビュー日: 2008/03/28
投稿数: 3
投稿日時: 2008-04-04 20:51
Matchの使い方はよく知らないけど、$& で多分できる。(未検証)

コード:
Dim re As New Regex("s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+", RegexOptions.IgnoreCase Or RegexOptions.Singleline)
txtBody.Text = re.Replace(txtBody.Text, "<a href=""$&"">$&</a>")



スマートな文字列処理のための正規表現入門(後編)
http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_03.html

スキルアップ/キャリアアップ(JOB@IT)