首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从URL字符串中提取主机名/域名

从URL字符串中提取主机名/域名
EN

Stack Overflow用户
提问于 2014-04-15 17:08:33
回答 7查看 39.7K关注 0票数 10

我有一个像http://hostname:port_no/control/login.jsp这样的网址。

我有上面的网址存储在一些String.Now中,我需要从字符串中提取hostname

我在Java代码中就是这样做的

代码语言:javascript
复制
String domain = url.substring(url.indexOf('/') + 2, url.lastIndexOf(':'));

我想知道是否有更好的方法来做同样的事情。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-04-15 17:17:15

您可以使用java.net.URI-class从字符串中提取主机名。

下面是一个方法,你可以从一个字符串中提取你的主机名。

代码语言:javascript
复制
public String getHostName(String url) {
    URI uri = new URI(url);
    String hostname = uri.getHost();
    // to provide faultproof result, check if not null then return only hostname, without www.
    if (hostname != null) {
        return hostname.startsWith("www.") ? hostname.substring(4) : hostname;
    }
    return hostname;
}

上面给出的是主机名,如果你的主机名是以hostname.com/...www.hostname.com/...开头的,它将返回' hostname‘,这是完全正确的。

如果给定的url无效(未定义的主机名),则返回null。

票数 19
EN

Stack Overflow用户

发布于 2014-04-15 17:13:26

代码语言:javascript
复制
java.net.URL aURL;
try {
    aURL = new java.net.URL("http://example.com:80/docs/");
    System.out.println("host = " + aURL.getHost()); //example.com
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
票数 8
EN

Stack Overflow用户

发布于 2014-04-15 17:12:08

代码语言:javascript
复制
java.net.URL u = new URL("http://hostname:port_no/control/login.jsp");
System.err.println(u.getHost());
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23079197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档