我有一个 URL https://xyz.com/abc/.../xyz/name_part。我想有效地将其拆分为 2 个单独的部分,即https://xyz.com/abc/.../xyz的命名空间 URI和作为 URL 中的 name_part 的名称部分。在 Java 中执行此操作的最佳方法是什么?请注意,命名空间 URI 不是固定的,它可以是动态的。干杯
问问题
109 次
4 回答
5
据我所知,JDK 的 URL 类可以满足您的需求。
URL url = new URL("https://test:password@localhost:7001/context/document?key1=val1&key2=val2");
检查所有的getters
URL 类。其中一些包括:
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 回答