it-swarm.com.de

Genauen Domainnamen von einer beliebigen URL erhalten

Ich muss den genauen Domänennamen aus einer beliebigen URL extrahieren.

Zum Beispiel,

URL: http://www.google.com -> Domain: google.com

URL: http://www.google.co.uk/path1/path2 -> Domain: google.co.uk

Wie ist das in c # möglich? Gibt es eine vollständige TLD-Liste oder einen Parser für diese Aufgabe?

24
Yazginin Firati

Sie können die Uri-Klasse verwenden, um auf alle Komponenten eines URI zuzugreifen:

var uri = new Uri("http://www.google.co.uk/path1/path2");

var Host = uri.Host;

// Host == "www.google.co.uk"

Es gibt jedoch keine integrierte Möglichkeit, die Sub-Domain "www" von "www.google.co.uk" zu entfernen. Sie müssen Ihre eigene Logik implementieren, z.

var parts = Host.ToLowerInvariant().Split('.');

if (parts.Length >= 3 &&
    parts[parts.Length - 1] == "uk" &&
    parts[parts.Length - 2] == "co")
{
    var result = parts[parts.Length - 3] + ".co.uk";

    // result == "google.co.uk"
}
31
dtb

Benutzen:

new Uri("http://www.stackoverflow.com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer").GetLeftPart(UriPartial.Authority).Replace("/www.", "/").Replace("http://", ""));

Eingang:

http://www.stackoverflow.com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer

Ausgabe:

stackoverflow.com

Funktioniert auch für Folgendes.

http://www.google.com → google.com

http://www.google.co.uk/path1/path2 → google.co.uk

http: //localhost.intranet: 88/pfad1/pfad2 → localhost.intranet: 88

http://www2.google.com → www2.google.com

16
mike james

Versuchen Sie die Klasse System.Uri.

http://msdn.Microsoft.com/de-de/library/system.uri.aspx

new Uri("http://www.google.co.uk/path1/path2").Host

die gibt "www.google.co.uk" zurück. Von da an ist es die String-Manipulation. : /

7
Craig Celeste

benutzen:

var uri =new Uri(Request.RawUrl); // to get the url from request or replace by your own
var domain = uri.GetLeftPart( UriPartial.Authority );

Eingang:

Url = http://google.com/?search=true&q=how+to+use+google

Ergebnis:

domain = google.com 
3
user240141

Eine andere Variante ohne Abhängigkeiten:

string GetDomainPart(string url)
{
    var doubleSlashesIndex = url.IndexOf("://");
    var start = doubleSlashesIndex != -1 ? doubleSlashesIndex + "://".Length : 0;
    var end = url.IndexOf("/", start);
    if (end == -1)
        end = url.Length;

    string trimmed = url.Substring(start, end - start);
    if (trimmed.StartsWith("www."))
        trimmed = trimmed.Substring("www.".Length );
    return trimmed;
}

Beispiele:

http://www.google.com → google.com

http://www.google.co.uk/path1/path2 → google.co.uk

http://localhost.intranet:88/path1/path2 → localhost.intranet:88

http://www2.google.com → www2.google.com

0
Mekanik