【问题标题】:java/android how to use contains() on a string of a urljava / android如何在url的字符串上使用contains()
【发布时间】:2017-08-15 19:19:35
【问题描述】:

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

我想做什么

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

我在做什么

我正在获取 x 和 y 之间的所有 URL,但其中一些是图像我正在使用 .contains() 方法检查它是否以“https”开头,这可以获取我想要的所有链接但是其中很多是以 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 标记中获取,但这会导致太多不相关的链接我也尝试获取最后三个字符的子字符串并像检查它们一样

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

我已经尝试使用 jsoup 来检查它是否有一个 img 标签,但这没有奏效,我还尝试检查链接的标题以设置一个布尔值并在尝试将链接添加到列表之前检查这个像这样

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

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

【问题讨论】:

  • 对于图片扩展,您可能希望使用endsWith(String) 而不是contains(String)
  • 谢谢你,我已经尝试过了,但是由于我在 if else 语句中犯了根本性错误,因此它可能无法正常工作,所以现在使用它感谢您的评论

标签: java android url jsoup contains


【解决方案1】:
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()

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多