0

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

但我如何获得剩余的 URL: http://xxx.xxx.xx.xx/resources/upload/2014/09/02/

4

4 回答 4

4

从 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 转换为一个数组,然后可以以多种方式使用该数组。有多种方法可以获得 url-lastPath,一种方法是使用这个答案加入上面生成的数组。或者像这样使用 lastIndexOf() 和子字符串:-

String restOfUrl = url.substring(0,url.lastIndexOf("/"));

PS:-虽然您可以通过这样做学到一些东西,但我认为您最好的解决方案是在完整的 url 字符串中用 %20 替换空格,这将是最快且更有意义的。

于 2014-09-03T04:14:09.717 回答
0

我不确定我是否理解正确,但是当你说

我有这个文件 URL: URL/ new sample.pdf稍后将转换为 URL/ new%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 存储在名为 say remainingURL 的字符串变量中。然后使用

List myList = new ArrayList(Arrays.asList(remainingURL.split("/")));

您可以迭代 myList 以获取其余的 URL 片段。

于 2014-09-03T05:01:53.310 回答
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/

于 2014-09-03T06:43:17.083 回答
0

弹簧解决方案:

List<String> pathSegments = UriComponentsBuilder.fromUriString(url).build().getPathSegments();
String lastPath = pathSegments.get(pathSegments.size()-1);
于 2019-09-04T12:03:33.893 回答