如何在java中拆分字符串url

时间:2014-07-07 09:48:09

标签: java

我想知道如何将字符串url拆分为主机和端口。 假设我有

 String http://localhost:1213 

我想拥有host =“localhost”和端口(整数或长整数)= 1213。

我这样做了:

     String[] parts = URL.split(":");
     String HOST = parts[0]; 
     String PORT = parts[1];

但它给了我:HOST = htp //和PORT = localhost显然因为它分裂到“:” 有关如何以正确的方式获取它们并且使用端口而不是字符串的任何帮助吗?

4 个答案:

答案 0 :(得分:7)

您可以使用URL类,它还会验证您的网址是否正确。

它有getHostgetPort方法,可以为您提供所需的内容。

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();