如何从其最后一个路径中拆分URL的其余部分

时间:2014-09-03 03:53:34

标签: java file url uri file-uri

我有这个文件网址: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/

4 个答案:

答案 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);