我有这个文件网址:http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new sample.pdf
,稍后会转换为http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new%20sample.pdf
。
现在我可以通过以下方式获得最后一条路径:
public static String getLastPathFromUrl(String url) {
return url.replaceFirst(".*/([^/?]+).*", "$1");
}
会给我new sample.pdf
但如何获取剩余的网址:http://xxx.xxx.xx.xx/resources/upload/2014/09/02/
?
答案 0 :(得分:3)
从URL获取最后一个路径的更简单方法是使用String.split函数,如下所示: -
String url = "http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new sample.pdf";
String[] urlArray = url.split("/");
String lastPath = urlArray[urlArray.length-1];
这会将您的网址转换为数组,然后可以通过多种方式使用该数组。有多种方法可以获取url-lastPath,一种方法是使用this answer连接上面生成的数组。或者像这样使用lastIndexOf()和substring: -
String restOfUrl = url.substring(0,url.lastIndexOf("/"));
PS: - 虽然你可以通过这样做来学习一些东西,但我认为你最好的解决方案是在完整的url字符串中用%20替换空格,这将是最快的并且更有意义。
答案 1 :(得分:0)
我不确定我是否理解正确但是当你说
时我有这个文件网址:网址/ new sample.pdf ,稍后会转换为网址/ 新%20sample.pdf 。
看起来您正在尝试将“空格”替换为URL中的%20,或者用简单的单词表示尝试处理URL中不需要的字符。如果这是你需要使用的预制
URLEncoder.encode(String url,String enc),你可以将我们ÜTF-8作为编码。
http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html
如果你真的需要拆分它,假设你对http://之后的URL感兴趣,删除http://并将存储剩余的URL保存在名为remainingURL的字符串变量中。然后使用
列出myList = new ArrayList(Arrays.asList(remainingURL.split(“/”)));
您可以迭代myList以获取其余的URL片段。
答案 2 :(得分:0)
我找到了它:
File file=new File("http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new sample.pdf");
System.out.println(file.getPath().replaceAll(file.getName(),""));
输出:
http://xxx.xxx.xx.xx/resources/upload/2014/09/02/
答案 3 :(得分:0)
春季解决方案:
List<String> pathSegments = UriComponentsBuilder.fromUriString(url).build().getPathSegments();
String lastPath = pathSegments.get(pathSegments.size()-1);