豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: java获取域名

🤖 Ai回答:
在 Java 中获取域名(即从 URL 或字符串中提取域名部分)有多种方式,以下是几种常见的方法:

✅ 方法一:使用 `java.net.URL` 类(推荐)

java
import java.net.URL;

public class GetDomain {
public static void main(String[] args) {
String urlString = https://www.65.hk:8080/path?query=1;

try {
URL url = new URL(urlString);
String domain = url.getHost(); // 获取主机名(域名)
int port = url.getPort(); // 获取端口

System.out.println(域名: + domain);
System.out.println(端口: + port);

// 如果需要去掉端口(如 :80, :443),可以进一步处理
if (port == 80 port == 443) {
domain = domain; // 保留原域名
} else {
domain = domain + : + port;
}

System.out.println(完整域名(含端口): + domain);
} catch (Exception e) {
e.printStackTrace();
}
}
}

输出示例:

域名: www.65.hk
端口: 8080
完整域名(含端口): www.65.hk:8080

⚠️ 注意:如果 URL 没有指定端口,默认端口是 80(HTTP)或 443(HTTPS),但 `url.getPort()` 返回 `-1` 表示未指定。

✅ 方法二:使用 `java.net.URI`(更灵活)

java
import java.net.URI;

public class GetDomainFromURI {
public static void main(String[] args) {
String uriString = https://www.65.hk:8080/path?query=1;

URI uri = URI.create(uriString);
String domain = uri.getHost();

System.out.println(域名: + domain);
}
}

`URI` 和 `URL` 类似,但 `URI` 不会尝试解析网络协议,更适合用于非网络操作的场景。

✅ 方法三:从字符串中手动提取域名(适用于无 URL 的情况)

如果你有一个字符串(比如 `http://65.hk`),想从中提取域名,可以使用正则表达式:

java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExtractDomain {
public static void main(String[] args) {
String input = https://www.65.hk:8080/path?query=1;

// 正则表达式匹配域名
Pattern pattern = Pattern.compile((?:https?://)?([^:/]+));
Matcher matcher = pattern.matcher(input);

if (matcher.find()) {
String domain = matcher.group(1);
System.out.println(域名: + domain);
} else {
System.out.println(未找到域名);
}
}
}

支持的格式:
`http://65.hk`
`https://www.65.hk`
`65.hk`
`subdomain.65.hk:8080`

这种方式适合你不想依赖 `URL`/`URI` 解析器时使用。

✅ 方法四:去除子域名(只保留主域名)

如果你想提取 顶级域名(TLD)和注册域名(例如 `65.hk` 而不是 `www.65.hk`),可以用第三方库,如 [Public Suffix List](https://github.com/publicsuffix/list)。

使用 [PublicSuffixList](https://github.com/publicsuffix/list)(推荐):

添加依赖(Maven):

xml
<dependency
<groupIdcom.github.publicsuffix</groupId
<artifactIdpublicsuffixlist</artifactId
<version1.2.0</version
</dependency

代码示例:

java
import com.github.publicsuffix.PublicSuffixList;
import com.github.publicsuffix.PublicSuffixListLoader;

public class ExtractBaseDomain {
public static void main(String[] args) throws Exception {
PublicSuffixList list = PublicSuffixListLoader.load();
String domain = www.65.hk;

String baseDomain = list.getBaseDomain(domain);
System.out.println(基础域名: + baseDomain); // 输出: 65.hk
}
}

该库能正确识别 `.co.uk`, `.com.cn` 等复杂 TLD。

✅ 总结:如何选择?

| 需求 | 推荐方法 |

| 从 URL 中提取域名 | `new URL(url).getHost()` |
| 从字符串中提取域名 | 正则表达式 |
| 提取“根域名”(如 65.hk) | 使用 `PublicSuffixList` |
| 处理 HTTPS、端口等 | `URL` / `URI` |

🔍 示例:完整功能函数

java
import java.net.URL;
import java.net.MalformedURLException;

public class DomainExtractor {

public static String getDomainFromUrl(String urlStr) {
try {
URL url = new URL(urlStr);
return url.getHost();
} catch (MalformedURLException e) {
throw new IllegalArgumentException(无效的 URL: + urlStr);
}
}

public static void main(String[] args) {
String url = https://www.google.com:443/search?q=java;
System.out.println(域名: + getDomainFromUrl(url)); // 输出: www.google.com
}
}

✅ 提示:
如果你要处理大量域名,请考虑使用 `PublicSuffixList` 来正确分离主域名。
对于非标准 URL(如 `ftp://`、`mailto:`),建议先做校验。

如需进一步帮助(如提取二级域名、判断是否为合法域名等),欢迎继续提问!

Ai作答

📣 商家广告


起名

广告招商

星座

取名

广告招商


0

IP地址: 54.132.245.63

搜索次数: 6

提问时间: 2025-12-22 10:21:52

🛒 域名购买

❓️ 热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊

🔗 友情链接

🧰 站长工具
📢

温馨提示

本站所有 问答 均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉

技术支持

本站由 🟢 豌豆Ai 提供技术支持,使用的最新版: 豌豆Ai站群搜索引擎系统 V.25.10.25 搭建本站。

上一篇 53411 53412 53413 下一篇