2016-08-12 460 views
3

我的问题是,如何判断html是否包含字符串中的任何内容,下面的内容不起作用。它抛出,不兼容的类型:java.lang.String中[]Java如何查看一个String是否包含多个单词?

public void run() { 
     Document doc; 
     String[] matches = new String[]{"Unavailable", "Too Short", "skin-3d"}; 
     try { 
      BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt", true)); 
      //Thread.sleep(3000); 
      doc = Jsoup.connect("https://t.com/s/" + line).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") 
        .referrer("http://www.google.com").ignoreHttpErrors(true).get(); 
      //Elements ID = doc.getElementsByClass("card-header"); 
      String html = doc.html(); 
      if (!html.contains(matches)) { 
       System.out.println(line + " taken"); 
       System.out.println(line + " is available or is only two chars"); 
       writer.write(line + "\n"); 
       writer.close(); 

      } else { 
       System.out.println(line + " taken"); 
       writer.close(); 
      } 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

    } 
} 
+0

只是要清楚你要检查,如果HTML包含在阵列匹配或至少一个所有的字符串? –

+0

是的正确,但像GhostCat的答案是垃圾邮件的网站3倍,我的时间 – nooby

+0

什么是正确的?全部匹配还是只有一个匹配? –

回答

0
if(html.contains(Bad[0]) || html.contains(Bad[1]) || html.contains(Bad[2])){ 
+0

如果数组包含100个元素,该怎么办?你不会写百次html.contains ... – L01c

2

contains方法只需要一个参数;其中必须单个CharSequence

您尝试传递字符串的数组

所以一个简单的解决办法是将它改成:

boolean anyMatch = false; 
for (String match : matches) { 
    if (html.contains(match)) { 
    anyMatch = true; 

,后来检查anyMatch

备案:这是非常基本的。编译器告诉你究竟是你的代码有什么问题。当你得到一个编译器消息...然后读取它。阅读javadoc以获取正在调用的库方法。在网络中搜索错误消息的部分内容。这就是你解决这些问题的方法!

+0

这对我而言并不适用,自从我连接三次以来,我现在被拒绝连接。 – nooby

+0

当然,你必须做出这样的改变。严肃地说:如果这样简单的事情给你带来如此多的问题:考虑退一步,现在就了解一些更基本的知识**。如果您无法拿到我的示例代码并将其放在源代码中的正确位置,请不要使用http连接,文件读取器等。换句话说:它是你的代码,你必须确保你只需要调用connect()和html()! – GhostCat

1

从Java API

布尔包含(CharSequence中)

返回true当且仅当此字符串包含char值的指定序列。

您不能将一个String数组赋给contains方法,而是一个String。 我建议你做一个for循环来解决问题:

boolean match = false; 
for (String s : matches){ 
    if (html.contains(s)){ 
     match = true; 
     break; 
    } 
} 
+0

您的答案与GhostCat答案相同,如果您没有任何新内容,则不需要重复答案。只要你能投票回答你认为适合这个问题的答案。谢谢 –

+0

首先,我在同一时间写了我的答案。其次,我认为对Java API的引用非常重要。它向人们表明,研究可以提前提出问题,而且往往是找到答案的最佳途径。最后,我的解决方案似乎有点快,因为一旦找到任何元素,它就会停止循环。 – L01c

+0

如果仅用于停止循环,您重新回答了问题,那么最好编辑第一个答案或留下评论,无论如何,您的答案中没有任何新东西只是复制和粘贴。 –

相关问题