在 Java 中获取没有子域的域?
Get domain without subdomains in Java?
下面的代码打印 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
库。
这很棘手,因为 URL
class 只能让你到此为止。它为您提供 主机名 ,然后由您提取 域名 减去 子域 。
要在此处识别域名,您需要知道什么 TLD(顶级域,如 .com、.co 等)或 ccTLD(国家/地区代码 TLD,如 .co.uk、.uk 等)您事先期待,因为这将确定您的位置(哪个 .
点)域名开头。
例如,以下正则表达式:
(?<=.)[^.]+\.(com|co(\.uk)?|uk)$
将为您识别以下域名:
www.google.com
mail.google.co
www.google.co.uk
www.sub.google.uk
更通用的解决方案需要事先做出假设,例如 TLD 或 ccTLD 将不会超过两个或三个字符以将它们与主域区分开来,但对于较新的 TLD,如 .guru、.photos、.expert、 .legal 等。它不再适用于所有域。
下面的代码打印 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
库。
这很棘手,因为 URL
class 只能让你到此为止。它为您提供 主机名 ,然后由您提取 域名 减去 子域 。
要在此处识别域名,您需要知道什么 TLD(顶级域,如 .com、.co 等)或 ccTLD(国家/地区代码 TLD,如 .co.uk、.uk 等)您事先期待,因为这将确定您的位置(哪个 .
点)域名开头。
例如,以下正则表达式:
(?<=.)[^.]+\.(com|co(\.uk)?|uk)$
将为您识别以下域名:
www.google.com
mail.google.co
www.google.co.uk
www.sub.google.uk
更通用的解决方案需要事先做出假设,例如 TLD 或 ccTLD 将不会超过两个或三个字符以将它们与主域区分开来,但对于较新的 TLD,如 .guru、.photos、.expert、 .legal 等。它不再适用于所有域。