Parsing string for Domain / hostName

.net, c#, dns, parsing, url

Solution

Rather than relying on unreliable regex use `System.Uri` to do the parsing for you. Use a code like this:

string uriStr = "www.foo.com";
if (!uriStr.Contains(Uri.SchemeDelimiter)) {
    uriStr = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriStr);
}
Uri uri = new Uri(uriStr);
string domain = uri.Host; // will return www.foo.com

Now to get just the top-level domain you can use:

string tld = uri.GetLeftPart( UriPartial.Authority ); // will return foo.com

Problem

Out customers can enter websites from domain names. They also can enter mailadresses from their contacts. Know we need to find customers which websited whoose domain can be associated to the domains of the mailadresses. So my idea is to extract the host from the webadress and from the url and compare them So what's the most reliable algorithm to get the hostname from a url? for example a host can be: ``` foo.com www.foo.com http://foo.com https://foo.com https://www.foo.com ``` The result should always be foo.com

Original source

Related problems