将字符串转换为HTML超链接

3
我定义了string类的ToHtml()扩展,将换行符转换为<br/>。如何检测超链接并将其转换为<a>元素?
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
在这个上下文中,定义一个“超链接”。由于文本中没有链接,因此拥有一个好的定义非常重要。 - Oded
2
对于您当前的实现,您可能希望考虑使用Environment.NewLine。另外,您期望字符串中的超链接是什么样子的? - Rich O'Kelly
3个回答

5

看这个,使用正则表达式将URL转换为链接。

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
你可以使用正则表达式来识别超链接的起始和结束位置(可能基于匹配长度),然后在前后添加锚点标签。

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>");     

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接