动态提取URL的最后一部分

时间:2013-05-25 05:19:51

标签: java string

我有一个网址https://xyz.com/abc/.../xyz/name_part。我想有效地将​​它分成两个独立的部分:名称空间URI https://xyz.com/abc/.../xyz和名称部分,即URL中的name_part。在Java中执行此操作的最佳方法是什么? 请注意,名称空间URI不是固定的,而且可以是动态的。 干杯

4 个答案:

答案 0 :(得分:5)

据我所知,JDK的URL类可以满足您的需求。

URL url = new URL("https://test:password@localhost:7001/context/document?key1=val1&key2=val2");

检查所有网址类getters。其中一些包括:

url.getProtocol();
url.getUserInfo();
url.getHost();
url.getPort();
url.getPath();
url.getQuery();

答案 1 :(得分:2)

效率在这方面不太可能引起关注。去寻找最容易理解的东西:

String url = "https://xyz.com/abc/.../xyz/name_part";
int separator = url.lastIndexOf('/');
String namespacePart = url.substring(0, separator);
String namePart = url.substring(separator + 1);

或者也许:

String url = "https://xyz.com/abc/.../xyz/name_part";
String[] pathSegments = URI.create(url).getPath().split("/");
String namePart = pathSegments[pathSegments.length - 1];
String namespacePart = url.replaceAll("/" + namePart + "$", "");

取决于你最自然的东西。

答案 2 :(得分:1)

答案 3 :(得分:1)

在这种情况下,我只想使用正则表达式

    String url = "https://xyz.com/abc/.../xyz/name_part";
    String[] a = url.split("/(?!.*/.*)");
    System.out.println(Arrays.toString(a));

输出

[https://xyz.com/abc/.../xyz, name_part]