刪除子域我想從一個URI刪除子域名。從URI
例如: 我想從Uri「subdomain.sub2.baseurl.com」返回'baseurl.com'。
是否有這樣做使用URI類方式或者是正則表達式唯一的解決辦法?
謝謝。
刪除子域我想從一個URI刪除子域名。從URI
例如: 我想從Uri「subdomain.sub2.baseurl.com」返回'baseurl.com'。
是否有這樣做使用URI類方式或者是正則表達式唯一的解決辦法?
謝謝。
這應該完成它:
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;
}
@holex這不是OP提出的問題點的一些例子。但是這個代碼可以很容易地修改來做到這一點。 – pimbrouwers 2017-06-02 16:55:56
我一直在指的是你的代碼根本沒有正確刪除子域 - 因此你的代碼是不正確的。 – holex 2017-06-05 09:05:16
@holex。度假時我會回家測試和調整。 – pimbrouwers 2017-06-05 19:39:29
NET不提供內置功能來提取Uri.Host特定部分,因此字符串操作/正則表達式是去這裏的路。
不建設性。 – pimbrouwers 2016-01-22 21:23:00
你可以提供'Regex' – 2017-06-02 10:40:26
技術上在你的榜樣「頂級」是.COM,頂層是.COM的子域,因爲你正在尋找域的這種子集提取幾乎是任意的。 – 2014-10-20 09:08:33
感謝您的意見。我認爲正則表達式因此是唯一的方式去這裏? – badger110 2014-10-20 09:36:17
我認爲正則表達式可能是你最好的選擇。 – 2014-10-20 09:38:01