java/android 如何在 url 的字符串上使用 contains()

java/android how to use contains() on a string of a url

我认为这应该相当简单,但我是一名新手程序员,无论出于何种原因,这都无法正常工作

我想做什么

我正在尝试使用 jsoup 抓取一个网站,我想获取 x 和 y 之间的所有 URL,但如果有图像则不行,

我在做什么

我正在获取 x 和 y 之间的所有 URL,但其中一些是图像我正在使用 .contains() 方法检查它是否启动 "https" 来实现此目的,这可以获取所有links 我想要,但其中很多是图像 links 以 png jpg 或 gif 结尾但是当我添加嵌套的 if 块以检查它是 png 还是 jpg 等而不将其添加到列表中时如果是,他们仍在添加到我的列表中,

            Elements metaElems = doc.select("meta");

            for (Element metaElem : metaElems) {
                     String content = metaElem.attr("content");
                        if (content.contains("https")){

                            if (content.contains("png")){
                                buffer.append("PNG");
                            }
                            if (content.contains("gif")){
                                buffer.append("GIF");
                            }
                            if (content.contains("jpg")){
                                buffer.append("JPG");
                            }
                            else {
                                linklist.add(content + "\r\n");
                            }
                        }
                }

我尝试了什么

我知道所有的 url 都可以从 href 标签中获取,但这会导致太多不相关的 links 我也尝试获取最后三个字符的子字符串并检查它们

                    String sub = content.substring(content.length() - 3);
                    //and checking it in my if statement like
                    sub.equals("png")

我尝试使用 jsoup 检查它是否有 img 标签,但这没有用,我还尝试检查 link 的 header 以设置布尔值并在之前检查它尝试将 link 添加到这样的列表中

URLConnection connection = new URL("http://foo.bar/w23afv")
.openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");

但这给了我一个 SSL 握手错误,我仔细阅读并试图解决这个错误,但我发现最简单的方法是没有信任管理器,我不喜欢这个想法, 我对此进行了很多搜索,我认为这可能是字符串具有不同字符的情况,显然我可以使用 Regex 解决它,但正如我所说的那样,我是一个初学者,我正在努力理解或解决这个问题有帮助吗?

if (content.contains("png")){
    buffer.append("PNG");
}
if (content.contains("gif")){
    buffer.append("GIF");
}
if (content.contains("jpg")){
    buffer.append("JPG");
}
else {
    linklist.add(content + "\r\n");
}

现在假设 content 包含 png。首先if条件满足,ok。重点是它走得更远。内容不包含 jpg,因此调用 else 块并将 content 添加到您的 LinkedList。

你需要做的是将第二个和第三个 if 更改为 else if。还可以考虑使用 startsWith()endsWith().