給定一個 URL,提取網域名稱是 Web 開發和資料處理中的常見任務。然而,由於 URL 語法的複雜性和潛在的邊緣情況,這可能具有挑戰性。
在本次討論中,我們提供了一個Java 解決方案,可以從URL 中提取域名並解決潛在的陷阱和邊緣情況:
提供的解決方案使用java.net.URI 而不是java.net.URL 進行解析URL:
<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>
此方法避免了java.net.URL 的多個問題,例如容易遭受拒絕服務攻擊以及缺乏對相對URL 的支援。
原始解決方案在一些邊緣情況下失敗了,包括:
對於格式複雜且可能無效的URL,您可以使用基於RFC 附錄B 的正規表示式3986. 然而,這種方法更加複雜,可能無法正確處理所有邊緣情況。
從 URL 中提取網域需要仔細考慮 URL 語法和潛在的邊緣情況。提供的 Java 解決方案解決了其中許多問題並確保可靠的網域提取。當處理更複雜的 URL 或無效輸入時,可能需要基於正規表示式的解析器。
以上是如何在 Java 中可靠地從 URL 中提取網域名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!