简体   繁体   中英

How do I split the rest of the URL from the last path of it

I have this file URL: http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new sample.pdf which will be converted to http://xxx.xxx.xx.xx/resources/upload/2014/09/02/new%20sample.pdf later.

Now I can get the last path by:

public static String getLastPathFromUrl(String url) {
    return url.replaceFirst(".*/([^/?]+).*", "$1");
}

which will give me new sample.pdf

but how do I get the remaining of the URL: http://xxx.xxx.xx.xx/resources/upload/2014/09/02/ ?

Easier way to get last path from URL would be to use String.split function, like this:-

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];

This converts your url into an Array which can then be used in many ways. There are various ways to get url-lastPath, one way could be to join the above generated Array using this answer. Or use lastIndexOf() and substring like this:-

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

PS:- Although you can learn something by doing this but I think your best solution would be to replace space by %20 in the complete url String, that would be the fastest and make more sense.

I am not sure if I understood it correctly but when you say

I have this file URL: URL/ new sample.pdf which will be converted to URL/ new%20sample.pdf later.

It looks like you are trying to replace "space" with %20 in URL or said in simple words trying to take care of unwanted characters in URL. If that is what you need use pre-built

URLEncoder.encode(String url,String enc), You can us ÜTF-8 as encoding.

http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html

If you really need to split it, assuming that you interested in URL after http://, remove http:// and take store remaining URL in string variable called say remainingURL. then use

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

You can iterate on myList to get rest of URL fragments.

I've found it:

    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(),""));

Output: http://xxx.xxx.xx.xx/resources/upload/2014/09/02/

Spring solution:

List<String> pathSegments = UriComponentsBuilder.fromUriString(url).build().getPathSegments();
String lastPath = pathSegments.get(pathSegments.size()-1);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM