从URI中删除子域

时间:2014-10-20 09:04:49

标签: c# windows-phone-8 uri

我想从URI中删除子域名。

实施例: 我想回归' baseurl.com'来自Uri" subdomain.sub2.baseurl.com"。

有没有办法使用URI类来实现这一点,还是Regex是唯一的解决方案?

谢谢。

1 个答案:

答案 0 :(得分:1)

这应该完成它:

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;
}