2016-08-12 92 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

如果僅用於停止循環,您重新回答了問題,那麼最好編輯第一個答案或留下評論,無論如何,您的答案中沒有任何新東西只是複製和粘貼。 –

相關問題