2

私は解決策を探し回って、それは簡単な質問だと確信していますが、それでもそれを行う方法がわかりません。ですから、私は多くの単語を含む文字列を持っており、時にはリンクが含まれています。例えば:

私はウェブサイトhttp://somesitehere.com/somepage.htmlが好きで、あなたもそれを試してみることをお勧めします。

ビューに文字列を表示し、すべてのリンクを自動的にURLに変換したいと思います。

@Model.MyText

StackOverflowでさえそれを取得します。

4

3 に答える 3

1

これを行う1つの方法は、テキストのチャンクに対して正規表現の一致を実行し、そのURL文字列をアンカータグに置き換えることです。

于 2012-09-24T15:24:02.393 に答える
1

@ハンターは正しいです。さらに、C#で完全な実装を見つけました:http ://weblogs.asp.net/farazshahkhan/archive/2008/08/09/regex-to-find-url-within-text-and-make-them-as-link .aspx

元のリンクがダウンした場合

VB.Netの実装

Protected Function MakeLink(ByVal txt As String) As String
    Dim regx As New Regex("http://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?", RegexOptions.IgnoreCase)

    Dim mactches As MatchCollection = regx.Matches(txt)

    For Each match As Match In mactches
        txt = txt.Replace(match.Value, "<a href='" & match.Value & "'>" & match.Value & "</a>")
    Next

    Return txt
End Function

C#.Netの実装

protected string MakeLink(string txt) 
{ 
   Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase); 

   MatchCollection mactches = regx.Matches(txt); 

   foreach (Match match in mactches) { 
    txt = txt.Replace(match.Value, "<a href='" + match.Value + "'>" + match.Value + "</a>"); 
   }
   return txt; 
}
于 2012-09-24T15:32:06.160 に答える
1

KvanTTT回答で使用でき、httpsURLを受け入れるという追加の利点がある別の正規表現

https?://([\ w + ?. \ w +])+([a-zA-Z0-9 \〜!\ @#\ $ \%\ ^ \&*()_-\ = + \ / \ ?。:\; \'\、] *)?

.net文字列表現:

"https?://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?"
于 2016-02-09T09:08:50.023 に答える