号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

C#将字符串中的URL地址添加A标签

C#开发 作者: Rector 48662阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

应用场景如下:现有一个字符串:
var textToBeLinkified = "my string <a href='ftp://www.abc.com'>ftp://www.abc.com</a> abc ftp://www.abc.com abbbbb http://abc2.com";
此字符串中有带有A标签的链接,也有没有带A标签的URL地址,我们需要将没有带A标签的URL转换成有A标签的链接,而原带A标签的保持不变。可能这句话有点绕,具体的效果如下: convert-url-to-link 具体实现代码如下:  
private static void ConvertStringUrlToLink()
    {
      const string textToBeLinkified = "my string <a href='ftp://www.abc.com'>ftp://www.abc.com</a> abc ftp://www.abc.com abbbbb http://abc2.com";
      const string regex =@"((www.|(http|https|ftp|news|file)+://)[_.a-z0-9-]+.[a-z0-9/_:@=.+?,##%&amp;~-]*[^.|'|# |!|(|?|,| |>|<|;|)])";
      var urlExpression = new Regex(regex, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);

      var doc = new HtmlDocument();
      doc.LoadHtml(textToBeLinkified);

      var nodes = doc.DocumentNode.SelectNodes("//text()[not(ancestor::a)]");
      foreach (var node in nodes)
      {
        node.InnerHtml = urlExpression.Replace(node.InnerHtml, @"<a href=""$0"">$0</a>");
      }
      var linkifiedText = doc.DocumentNode.OuterHtml;
      Console.WriteLine(linkifiedText);
    }
实现中用到了组件:HtmlAgilityPack下载地址 本实例参考资料地址:http://stackoverflow.com/questions/8833588/regex-string-issue-in-making-plain-text-urls-clickable

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#将字符串中的URL地址添加A标签

发布于: 2014-07-15 12:53:32
分享扩散:

文章评论

获取验证码