以下代码打印www.sub.google.com
。
import java.net.MalformedURLException;
import java.net.URL;
public class GetDomainNameFromURL {
public static void main(String[] args) throws MalformedURLException {
String s = "http://www.sub.google.com/main?&t=20&f=52";
URL u = new URL(s);
String hostName = u.getHost();
System.out.println(hostName);
}
}
如何打印google.com
?需要使用普通Java
,无Guava
库。
答案 0 :(得分:2)
这很棘手,因为URL
类只能让你到目前为止。它为您提供主机名,然后由您提取域名减去子域。
要在此处识别域名,您需要知道哪些TLD(顶级域名,如.com,.co等)或ccTLD(国家/地区代码) TLD ,例如.co.uk,.uk等)您之前预期会因为这将决定您的域名从哪里开始(.
点)。
例如,以下正则表达式:
(?<=.)[^.]+\.(com|co(\.uk)?|uk)$
会为您识别以下域名:
万维网。的 google.com 强>
邮件。的 google.co 强>
万维网。的 google.co.uk 强>
www.sub。 google.uk
更通用的解决方案需要预先做出假设,例如TLD或ccTLD将不超过两个或三个字符,以区别于主域,但使用更新的顶级域名,如.guru,.photos,.expert,.legal它不可能使其适用于所有领域。