Można to zrobić, aby dostać zaledwie dwa ostatnie segmenty nazwa hosta:
string[] hostParts = new System.Uri(sURL).Host.Split('.');
string domain = String.Join(".", hostParts.Skip(Math.Max(0, hostParts.Length - 2)).Take(2));
albo to:
var host = new System.Uri(sURL).Host;
var domain = host.Substring(host.LastIndexOf('.', host.LastIndexOf('.') - 1) + 1);
Metoda ta znajdzie zawierać co najmniej dwie nazwy domeny części, ale będą również zawierać części pośrednie składające się z dwóch znaków lub mniej:
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);
To będzie obsługiwać domeny, takie jak localhost
, example.com
i example.co.uk
. To nie jest najlepsza metoda, ale przynajmniej oszczędza ci ona od zbudowania olbrzymiej listy domen najwyższego poziomu.
podobne do http://stackoverflow.com/questions/4643227/top-level-domain-from-url-in-c-sharp – ysrb
Właściwie chcesz domenę najwyższego poziomu. poddomena.website.com to domena, a witryna witryny to najwyższy poziom. – ysrb
To naprawdę nie jest bardzo trudny ciąg do przeanalizowania. Czy próbowałeś już prostej kombinacji '.Split' i' string.Join'? –