Bạn có thể làm điều này để có được chỉ là hai đoạn cuối cùng của tên máy chủ:
string[] hostParts = new System.Uri(sURL).Host.Split('.');
string domain = String.Join(".", hostParts.Skip(Math.Max(0, hostParts.Length - 2)).Take(2));
Hoặc này:
var host = new System.Uri(sURL).Host;
var domain = host.Substring(host.LastIndexOf('.', host.LastIndexOf('.') - 1) + 1);
Phương pháp này sẽ tìm thấy bao gồm ít nhất hai tên miền các bộ phận, nhưng cũng sẽ bao gồm các phần trung gian của hai ký tự trở xuống:
var host = new System.Uri(sURL).Host;
int index = host.LastIndexOf('.'), last = 3;
while (index > 0 && index >= last - 3)
{
last = index;
index = host.LastIndexOf('.', last - 1);
}
var domain = host.Substring(index + 1);
Thao tác này sẽ xử lý các miền như localhost
, example.com
và example.co.uk
. Nó không phải là phương pháp tốt nhất, nhưng ít nhất nó giúp bạn tiết kiệm từ việc xây dựng một danh sách khổng lồ các tên miền cấp cao nhất.
Nguồn
2013-05-10 01:59:59
Tương tự như http://stackoverflow.com/questions/4643227/top-level-domain-from-url-in-c-sharp – ysrb
Trên thực tế bạn muốn miền cấp cao nhất. subdomain.website.com là tên miền và website.com là tên miền cấp cao nhất. – ysrb
Đây thực sự không phải là một chuỗi rất khó phân tích cú pháp. Bạn đã thử kết hợp đơn giản nào của '.Split' và' string.Join'? –