Java有很酷的URL解析器
import java.net.*;
import java.io.*;
public class ParseURL {
public static void main(String[] args) throws Exception {
URL aURL = new URL("http://example.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
System.out.println("path = " + aURL.getPath());
}
}
以下是程序显示的输出:
path = /docs/books/tutorial/index.html
我只想采取这一部分:docs/books/tutorial
(或/docs/books/tutorial/
)猜测不要使用字符串拆分,我正在为此任务寻找其他更好的解决方案。
提前谢谢
答案 0 :(得分:2)
String path = "/docs/books/tutorial/index.html";
path = path.substring(1, path.lastIndexOf("/"));
给出docs/books/tutorial
答案 1 :(得分:2)
您可以使用文件对象执行此操作,而不是拆分字符串:
工作示例:
import java.io.File;
import java.net.URL;
public class ParseURL {
public static void main(String[] args) throws Exception {
URL aURL = new URL("http://example.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
System.out.println("path = " + aURL.getPath());
File file = new File(aURL.getPath());
System.out.println("pathOnly = " + file.getParent());
}
}
输出:
path = /docs/books/tutorial/index.html
pathOnly = /docs/books/tutorial
答案 2 :(得分:2)
有几种方法。其中一个使用URI#resolve(".")
,其中.
代表当前目录。所以你的代码看起来像:
URI uri = new URI("http://example.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
System.out.println(uri.resolve(".").getPath());
输出:/docs/books/tutorial/
其他方式可能涉及文件系统和处理它的类,如File
或其在Java 7 Path
(及其实用程序类Paths
)中引入的改进版本。
这些类应该允许您解析path
/docs/books/tutorial/index.html
并获取其父位置/docs/books/tutorial
。
URL aURL = new URL("http://example.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
String path = aURL.getPath();
String parent = Paths.get(path).getParent().toString();
System.out.println(parent);// \docs\books\tutorial
(小警告:根据您的操作系统,您可能会使用\
而非/
分隔路径
答案 3 :(得分:1)
以此为例:
public static String getCustomPath() {
String path = "/docs/books/tutorial/index.html";
String customPath = path.substring(0, path.indexOf("index.html"));
return customPath;
}