我想知道如何将字符串url拆分为主机和端口。 假设我有
String http://localhost:1213
我想拥有host =“localhost”和端口(整数或长整数)= 1213。
我这样做了:
String[] parts = URL.split(":");
String HOST = parts[0];
String PORT = parts[1];
但它给了我:HOST = htp //和PORT = localhost显然因为它分裂到“:” 有关如何以正确的方式获取它们并且使用端口而不是字符串的任何帮助吗?
答案 0 :(得分:7)
您可以使用URL类,它还会验证您的网址是否正确。
它有getHost
和getPort
方法,可以为您提供所需的内容。
URL u = new URL(VAC_URL);
String host = u.getHost();
int port = u.getPort();
如果URL无效,构造函数将抛出异常。
答案 1 :(得分:1)
如果您想返回带有协议和端口的主机,例如:“ http://127.0.0.1”和“ 9090”,那么这就是我创建的函数进行检查...
public static String[] divideHostPort(String hostWithPort) {
String hostProtocol;
String[] urlParts = new String[2];
if (hostWithPort.startsWith("http://")) {
hostProtocol = "http://";
hostWithPort = hostWithPort.replace(hostProtocol, "");
if (hostWithPort.split(":").length == 2) {
urlParts[0] = hostProtocol + hostWithPort.split(":")[0];
urlParts[1] = hostWithPort.split(":")[1];
} else {
urlParts[0] = hostProtocol +hostWithPort;
urlParts[1] = "80";
}
return urlParts;
} else if (hostWithPort.startsWith("https://")) {
hostProtocol = "https://";
hostWithPort = hostWithPort.replace(hostProtocol, "");
if (hostWithPort.split(":").length == 2) {
urlParts[0] = hostProtocol + hostWithPort.split(":")[0];
urlParts[1] = hostWithPort.split(":")[1];
} else {
urlParts[0] = hostProtocol + hostWithPort;
urlParts[1] = "80";
}
return urlParts;
} else {
hostProtocol = "http://";
if (hostWithPort.split(":").length == 2) {
urlParts[0] = hostProtocol + hostWithPort.split(":")[0];
urlParts[1] = hostWithPort.split(":")[1];
} else {
urlParts[0] = hostProtocol + hostWithPort;
urlParts[1] = "80";
}
return urlParts;
}
}
像String arr[]=divideHostPort("http://127.0.0.1:9090")
一样叫它
要检索两个详细信息,请使用String host=arr[0]
和String port=arr[1]
之类的数组
答案 2 :(得分:0)
String s= http://localhost:1213
String[] parts = s.split(":");
String HOST = parts[1].replaceAll("//",""); // part[0] is http, part[1] is //localhost, part[2] is 1213
String PORT = parts[2];
答案 3 :(得分:0)
只需使用Integer.parseInt()
作为端口变量:
String[] parts = VAC_URL.split(":");
String HOST = parts[1].replaceAll("//","");
int PORT = Integer.parseInt(parts[2]);
或者长期使用它:
long PORT = Long.valueOf(parts[2]).longValue();