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

C#开发 2014-07-15 48314阅读 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标签

文章评论

获取验证码