從 URL 中提取網域名稱
從 URL 中提取網域的任務經常出現。本文討論了此任務的常見 Java 實現,並探索了提高準確性和處理潛在邊緣情況的替代方法。
初始實作
提供的 Java 程式碼從規範化開始如果需要,可以在 URL 前面加上「http://」。然後,它使用 java.net.URL 解析 URL 以取得主機字串。最後,如果主機以“www”開頭,則為“www”之後的子字串。作為域名返回。
替代方法
但是,這種方法有局限性:
改進的實作
為了解決這些問題,我們建議使用 java.net.URI 進行 URL 解析。 URI 提供了更健壯和可靠的方法:
<code class="java">public static String getDomainName(String url) throws URISyntaxException { URI uri = new URI(url); String domain = uri.getHost(); return domain.startsWith("www.") ? domain.substring(4) : domain; }</code>
此程式碼將 URL 轉換為 URI,取得主機字串,並刪除「www」。前綴(如果存在)。
其他注意事項
即使改進了實現,仍然可能存在一些需要注意的邊緣情況。 RFC 3986 附錄 B 提供了一個正規表示式,可以處理更複雜的 URI 解析場景。
邊緣情況
以下是一些初始實作可能失敗的額外邊緣情況處理:
整體而言,使用java.net.URI 進行URL 解析提供了一種更全面、更準確的方法來從URL中提取域名,特別是在處理複雜或可能無效的情況時網址。
以上是如何用Java準確地從URL中提取域名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!