0

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

4

4 回答 4

5

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

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

检查所有的gettersURL 类。其中一些包括:

url.getProtocol();
url.getUserInfo();
url.getHost();
url.getPort();
url.getPath();
url.getQuery();
于 2013-05-25T05:25:42.503 回答
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 + "$", "");

取决于你觉得最自然的东西。

于 2013-05-25T07:13:15.747 回答
1

使用 URL 类,它在所有相关部分中拆分一个 url:http: //docs.oracle.com/javase/7/docs/api/java/net/URL.html

http://docs.oracle.com/javase/7/docs/api/java/net/URL.html#URL(java.lang.String)

于 2013-05-25T05:25:02.543 回答
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]
于 2013-05-25T05:44:35.017 回答