Linkify

public static class LinkExtension {
    private readonly static Regex domainRegex = new Regex( @"(((?<scheme>http(s)?):\/\/)?([\w-]+?\.\w+)+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\,]*)?)", RegexOptions.Compiled | RegexOptions.Multiline );

    public static string Linkify( this string text, string target = "_self") {
        return domainRegex.Replace(
            text,
            match => {
                var link = match.ToString();
                var scheme = match.Groups["scheme"].Value == "https" ? Uri.UriSchemeHttps : Uri.UriSchemeHttp;
                
                var url = new UriBuilder( link ) { Scheme = scheme }.Uri.ToString();
                                
                return string.Format( @"<a href=""{0}"" target=""{1}"">{2}</a>", url, target, link );
            }
        );
    }
}
Example:
void Main() {   
    Console.WriteLine( "This goes to the https://www.test.com website".Linkify() );
    Console.WriteLine( "This goes to the http://www.test.com website".Linkify("_blank") );
    Console.WriteLine( "This goes to the www.test.com website".Linkify() );
    Console.WriteLine( "This goes to the test.com website".Linkify("_blank") );
    Console.WriteLine( "This goes to the test.com/page.html page".Linkify() );
    Console.WriteLine( "This goes to the https://wwwtest.com/folder/page.html page".Linkify("_blank") );
}

Description

Takes a string of text and replaces text matching a link pattern to a hyperlink

Details

Double click on the code to select all.

 

;