2011-12-05 16 views
3

文字列クラスのToHtml()拡張を定義し、改行を<br/>に変換しました。 ハイパーリンクを検出して<a>要素に変換するにはどうすればよいですか?文字列をhtmlに変換する(ハイパーリンク)

public static class StringExtension 
{ 
    public static string ToHtml(this string item) 
    { 
     //\r\n windows 
     //\n unix 
     //\r mac os 
     return item.Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>"); 
    } 
} 

のC#、asp.net

+2

は、この文脈で 'hyperlink'を定義します。テキストにはリンクがないため、良い定義が重要です。 – Oded

+2

現在の実装では、Environment.NewLineの使用を検討してください。また、あなたの文字列の中でハイパーリンクがどのように見えると思いますか? –

答えて

5

see this oneは、おそらくの長さに基づいて(ハイパーリンクが始まる場所あなたが識別するためにここに正規表現を使用することができ、正規表現

private string ConvertUrlsToLinks(string msg) { 
    string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95;.a-z0-9-]+\.[a-z0-9\/&#95;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])"; 
    Regex r = new Regex(regex, RegexOptions.IgnoreCase); 
    return r.Replace(msg, "<a href=\"$1\" title=\"Click to open in a new window or tab\" target=\"&#95;blank\">$1</a>").Replace("href=\"www", "href=\"http://www"); 
} 
1

と端を使用していますmatch) その後、アンカータグを前後に追加します。使用することにより

1

string strContent = YourText; 
Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)", 
       RegexOptions.IgnoreCase| RegexOptions.Compiled); 
strContent = urlregex.Replace(strContent, 
      "<a href=\"$1\" target=\"_blank\">$1</a>");  
関連する問題