using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.IO; using System.Xml; using System.Text.RegularExpressions; public interface IStringUtilities { string ConvertPlainTextUrlsToHtmlHyperlinks(string input, HyperlinkOptions options = HyperlinkOptions.None); } public class Solution : IStringUtilities { public string ConvertPlainTextUrlsToHtmlHyperlinks(string input, HyperlinkOptions options = HyperlinkOptions.None) { Regex r = new Regex("(https?://[^ ]+)"); var target = (options & HyperlinkOptions.OpenInNewWindow) == HyperlinkOptions.OpenInNewWindow ? " target='_blank'" : String.Empty; var noFollow = (options & HyperlinkOptions.NoFollow) == HyperlinkOptions.NoFollow ? " rel='nofollow'" : String.Empty; return r.Replace(input, String.Format("$1", target, noFollow)); } } public enum HyperlinkOptions { None = 0, OpenInNewWindow = 1, NoFollow = 2 }