2013-02-06 6 views
8

文字列にリストに保持されているすべての値が含まれているかどうかを確認できます。 答えのリストからすべての「キーワード」がある場合にのみ、「正解」を返します。 何か疲れていて、どちらが失敗したか;(すべての配列をチェックせず、1つしか受け付けません)。疲れ コードI:私は何をしたいか、本質的文字列にリストのすべての入力が含まれていることを確認してください

foreach (String s in KeyWords) 
     { 
      if (textBox1.Text.Contains(s)) 
      { 
       correct += 1; 
       MessageBox.Show("Correct!"); 
       LoadUp(); 
      } 
      else 
      { 
       incorrect += 1; 
       MessageBox.Show("Incorrect."); 
       LoadUp(); 
      } 
     } 

は次のとおりです。

質問:心理学の定義は何ですか?配列リストで

キーワード:心理学はの人間

精神的なプロセス行動の研究です:研究、精神的なプロセス、行動は、

回答を人間

今や、上記の答えはすべてのキーワードを含んでいます。私のコードは答えを受け入れます。 私はこれで明らかになったと思います。

編集:ありがとうございました。すべての回答が投票されました。迅速な回答のために皆に感謝します。私はどのコードにも簡単に適応できる答えを投票しました。 :)

答えて

13

// case insensitive check to eliminate user input case differences 
var invariantText = textBox1.Text.ToUpperInvariant(); 
bool matches = KeyWords.All(kw => invariantText.Contains(kw.ToUpperInvariant())); 
2

はあなたが好きなLINQのメソッドの一部を使用することができます。関数は、リスト内のすべての項目に対してtrueを返すとき

if(Keywords.All(k => textBox1.Text.Contains(k))) { 
    correct += 1; 
    MessageBox.Show("Correct"); 
} else { 
    incorrect -= 1; 
    MessageBox.Show("Incorrect"); 
} 

Allメソッドがtrueを返します。 LINQを使用して

2

これは役立つはず:

string text = "Psychology is the study of mental process and behaviour of humans"; 
bool containsAllKeyWords = KeyWords.All(text.Contains); 
関連する問題