Linkify
Takes a string of text and replaces text matching a link pattern to a hyperlink
Source
public static class LinkExtension {
private readonly static Regex domainRegex = new Regex( @"(((?<scheme>http(s)?):\/\/)?([\w-]+?\.\w+)+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\,]*)?)", 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") );
}