Search code examples
c#windows-phone-8uri

Remove subdomains from URI


I want to remove subdomain names from a URI.

Example: I want to return 'baseurl.com' from the Uri "subdomain.sub2.baseurl.com".

Is there a way of doing this using URI class or is Regex the only solution?

Thank you.


Solution

  • This should get it done:

    var tlds = new List<string>()
    {
        //the second- and third-level TLDs you expect go here, set to null if working with single-level TLDs only
        "co.uk"
    };
    
    Uri request = new Uri("http://subdomain.domain.co.uk");
    string host = request.Host;
    string hostWithoutPrefix = null;
    
    if (tlds != null)
    {
        foreach (var tld in tlds)
        {
            Regex regex = new Regex($"(?<=\\.|)\\w+\\.{tld}$");
            Match match = regex.Match(host);
    
    
            if (match.Success)
                hostWithoutPrefix = match.Groups[0].Value;
        }
    }
    
    //second/third levels not provided or not found -- try single-level
    if (string.IsNullOrWhiteSpace(hostWithoutPrefix))
    {
        Regex regex = new Regex("(?<=\\.|)\\w+\\.\\w+$");
        Match match = regex.Match(host);
    
    
        if (match.Success)
            hostWithoutPrefix = match.Groups[0].Value;
    }