2016-08-12 13 views
3

私の質問は、htmlに文字列に何かが含まれているかどうかを確認するにはどうすればいいですか?以下は動作しません。それは、互換性のない型をスロー:java.lang.Stringでは、[]Java文字列に複数の単語が含まれているかどうかを確認するには?

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の回答のようなものがウェブサイトをスパムしているのは何回ですか?私は時間をかけて返します – nooby

+0

何が正しいですか?すべての一致または1つだけの一致? –

答えて

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

配列に100要素が含まれている場合はどうなりますか?あなたは100回html.containsを書いていません... – L01c

2

ザ・メソッドだけ引数を取り含まれています。単一の文字列でなければなりません。CharSequence

配列の代わりに文字列を渡そうとします。

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

以降のチェックanyMatch上:

だから1つの簡単な解決策はにそれを変更することです。

記録のため:これは本当に基本的なものです。そして、コンパイラはあなたにを正確にあなたのコードの問題があると言った。コンパイラのメッセージを受け取ったら... を読んでください。呼び出すライブラリメソッドのjavadocを読んでください。エラーメッセージの部分をネットで検索します。それはあなたがそのような問題を解決する方法です!

+0

これは私のためには機能しませんでしたが、私は今3回接続しているので接続が拒否されています。 – nooby

+0

もちろん、その変更を行う必要があります。そして、真剣に:もしこのような簡単なことがあなたに非常に多くの問題を与えるならば、今すぐに戻り、いくつかのより基本的なことを学んでください**。サンプルコードをソースコードの正しい場所に置くことができない場合は、http接続、ファイルリーダーなどで遊んではいけません。言い換えれば、それはあなたのコードなので、あなたはconnect()とhtml()を一度呼び出すことを確実にしなければなりません! – GhostCat

1

ブール

のJava APIからのIF真(のCharSequence s)は

戻り値が含まれており、この文字列は、指定されたchar値のシーケンスが含まれている場合のみ。

Stringの配列をcontainsメソッドに与えることはできません。 は、私はあなたの問題を解決するためのループのために行うことをお勧め:

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

あなたの答えはGhostCatの回答と同じです。何も新しいことがなければ、重複する回答は必要ありません。あなたはこの質問のために正しいと思う答えを投票することができます。おかげで –

+0

まず、私は同時に私の答えを書いていた。第二に、私はJava APIへの参照が本当に重要だと思います。それは、調査を前向きにして質問をすることができ、答えを見つけるのに最も良い方法であることを人々に示しています。最後に、私の解決策は、要素が見つかるとループを停止するので少し早くなるようです。 – L01c

+0

ループを止めるためだけに質問に答えた場合は、最初の回答を編集するかコメントを残してください。コピーして貼り付けるだけで新しい答えはありません。 –

関連する問題