24

URL から正確なドメイン名を抽出する必要があります。

例えば、

URL : http://www.google.com --> ドメイン : google.com

URL : http://www.google.co.uk/path1/path2 --> ドメイン : google.co.uk

これは c# でどのように可能ですか? そのタスクの完全な TLD リストまたはパーサーはありますか?

4

5 に答える 5

31

Uri クラスを使用して、URI のすべてのコンポーネントにアクセスできます。

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

var host = uri.Host;

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

ただし、サブドメイン「www」を「www.google.co.uk」から取り除く組み込みの方法はありません。独自のロジックを実装する必要があります。

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"
}
于 2011-05-12T20:57:50.370 に答える
16

使用する:

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://", ""));

入力:

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

出力:

stackoverflow.com

以下にも使用できます。

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

于 2012-12-07T10:57:17.093 に答える
7

System.Uri クラスを試してください。

http://msdn.microsoft.com/en-us/library/system.uri.aspx

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

「www.google.co.uk」を返します。そこから文字列操作です。:/

于 2011-05-12T20:57:53.210 に答える
3

使用する:

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

入力:

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

結果:

domain = google.com 
于 2012-04-27T17:44:37.920 に答える
1

依存関係のない別のバリアント:

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

例:

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

于 2014-04-30T09:04:20.823 に答える