2015-07-18 79 views
1

使用JSOUP我解析了一个HTML页面,并且找到了图像路径,但现在我需要获取图像文件名称,它是网址路径。过滤图像的URL路径(img src)以获得文件名

例如,这是IMG SRC:

http://cdn-6.justdogbreeds.com/images/3.gif.pagespeed.ce.MVozFWTz66.gif

文件名是3.gif

我应该用什么从URL路径中获取名称?也许是正则表达式?

我也有其他的网址图片:

http://cdn-1.justdogbreeds.com/images/**10.gif**.pagespeed.ce.gsOmm6tF7W.gif 
http://cdn-4.justdogbreeds.com/images/**6.gif**.pagespeed.ce.KbjtJ32Zwx.gif 
http://cdn-2.justdogbreeds.com/images/**8.gif**.pagespeed.ce.WAWhS-Qb82.gif 
http://cdn-3.justdogbreeds.com/images/**7.gif**.pagespeed.ce.UKTkscU8uT.gif 

回答

2

代替正则表达式,你可以使用String.lastIndexOf()String.substring()

String imgSrc = "http://cdn-1.justdogbreeds.com/images/10.gif.pagespeed.ce.gsOmm6tF7W.gif"; 
    String imageName = imgSrc.substring(imgSrc.lastIndexOf("/") + 1); 
    imageName = imageName.substring(0, imageName.indexOf(".", 3)); 
    System.out.println(imageName); // prints out 10.gif 

这将查找正斜杠(/)的最后一次出现,之后图像名称开始。字符串的其余部分是完整的图像名称。您只需要10.gif位,因此第2行的其余部分会查找图像名称后的下一个时间段。

+0

我很高兴它帮助! – spork

1

您可以使用正则表达式替换,以获得您需要的值:

String filename = imgsrc.replaceAll("http://[^/]*justdogbreeds.com/images/([^/]*?\\.gif).*", "$1"); 

随着我们整个URL匹配的正则表达式,并捕获在images/之后的文字以及(包括)第一个.gif([^/]*?\\.gif)匹配0或更多除/以外的字符尽可能少,然后.gif。如果你有其他的扩展,您既可以列举出来的交替组(如([^/]*?\\.(?:gif|jpe?g|png)),或者用一个更通用的模式[^.]+1个或多个字符以外.):

String filename = imgsrc.replaceAll("http://[^/]*justdogbreeds.com/images/([^/]*?\\.[^.]+).*", "$1"); 

IDEONE demo

String imgsrc = "http://cdn-1.justdogbreeds.com/images/10.gif.pagespeed.ce.gsOmm6tF7W.gif"; 
String filename = imgsrc.replaceAll("http://[^/]*justdogbreeds.com/images/([^/]*?\\.gif).*", "$1"); 
System.out.println(filename); 
+1

谢谢!,你的解决方案也很棒!并解决问题。 – user1099798