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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (298)

我有一个URLhttp://hostname:port_no/control/login.jsp

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

String domain = url.substring(url.indexOf('/') + 2, url.lastIndexOf(':'));

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

提问于
用户回答回答于

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

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

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/...,它将以“主机名”返回。

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

用户回答回答于

尝试下面的代码示例,

String URL= "http://hostname:port_no/control/login.jsp";
String s_URL[] = ULR.split("//");
String s1 = s_URL[1];
String s2[] = s1.split(":");
String hostname = s2[0];

扫码关注云+社区

领取腾讯云代金券