8

次のようなさまざまな形式の一連の文字列(URL)があります。

  1. http://domain name.anything/anypath
  2. https://dmain name.anything/anypath
  3. http://www.domain name.anything/anypath
  4. https://www.dmain name.anything/anypath

これらの文字列はCSVファイルに保存されます。ドメイン名のみを取得するには、すべてのURLを解析する必要がありますdomain name.anything。つまり、最初の後と最初.の前の部分/

メソッドを使用して文字列を分離し、split各文字列をURLに変換してから、toAuthority関数を使用してドメイン名のみを取得しました。問題は、私のために同じ仕事をしているということです。彼らにはtoAuthority私が望まないものが含まれています。ただし、Oracleのチュートリアルでは、ドメイン名を。なしで返すことになっているようです。toHostwww.toAuthoritywww.

www.URLなしでドメイン名部分のみを抽出するにはどうすればよいですか?

4

3 に答える 3

14

URL クラスの getHost メソッドと getAuthority メソッドの違いは何ですか?

これを本当に理解するには、URI 仕様 - RFC 2396を読む必要があります。

簡単に言えば、オーソリティ コンポーネントはホスト コンポーネントと、オプションのポート番号、ユーザー名、およびパスワードで構成されているということです。使用される URL スキームによって異なります。


「www」なしでドメイン名部分のみを抽出するにはどうすればよいですか。URLの??

を呼び出しgetHost()、文字列で始まるかどうかをテストし、そうで"www."あれば削除します。

しかし、そのようなことを始める前に、「www.」を削除することを理解する必要があります。は、機能しない URL、または元の URL が解決するものとは異なるドキュメントまたはサービスに解決される URL を提供する場合があります。問題のサイトがどのように構成されているかについて詳細な知識がない限り、URL をむやみに整理するのは悪い考えです。

「foo.com」と「www.foo.com」が同じ場所であるという慣習は単なる慣習であり、多くのサイトでは実装されていません。「www.」を削除します。解決可能な URL を解決できない URL に変えてしまう可能性があるため、これは悪い考えです。

于 2012-06-26T14:56:38.483 に答える
2

google guava を使用して、ホスト名からドメイン名を取得できます。

InternetDomainName.from(hostname).topPrivateDomain().toString()
于 2014-07-29T11:44:53.197 に答える
1

有効な第 2 レベル ドメインを抽出しようとしているようです。Stephen が説明しているように、最初にホスト名を取得し、最後から 2 番目のピリオドで始まる部分文字列を抽出することで、.com、.net、.org などの少数のパブリック サフィックスを簡単に抽出できます。ただし、co.uk などの多くのパブリック サフィックスは、この単純なアルゴリズムを破ります。パブリック サフィックスの完全なリストは、http: //publicsuffix.org/で確認できます。ルックアップ テーブルでパブリック サフィックスを使用して、有効な第 2 レベル ドメインを取得できます。

于 2013-09-23T20:53:51.253 に答える