【问题标题】:Filter the URL path of images (img src) to obtain the file name过滤图片的URL路径(img src)获取文件名
【发布时间】:2015-10-08 08:35:09
【问题描述】:

我使用 JSOUP 解析 HTML 页面并找到了图像路径,但现在我需要获取图像文件名,它是 url 路径的一部分。

例如,这是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

【问题讨论】:

    标签: java html regex image jsoup


    【解决方案1】:

    您可以将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 行的其余部分会在图像名称之后找到下一个句点。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢!,您的解决方案也很棒!并解决问题。
      猜你喜欢
      • 2015-04-06
      • 2011-03-26
      • 1970-01-01
      • 2018-07-13
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多