2013-02-06 39 views
8

Dize listedeki tüm değerleri içerip içermediğini kontrol edebilmek istiyorum; Bu yüzden, cevabınızdaki listeden tüm 'anahtar kelimeler' varsa, yalnızca size 'doğru cevap' verecektir. Heres hangi yarıda başarısız olursa yoruldu, (Tüm dizileri kontrol etmez, sadece birini kabul eder). Kod i yorgun:Dize listedeki tüm girişleri içerip içermediğini kontrol edin

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

Esasen ne yapmak istediğim geçerli:

Soru: Psikoloji tanımı nedir? arraylist içinde

Anahtar kelimeler: çalışmada, zihinsel süreç, davranış,

Cevap insanlarda: Psikoloji zihinsel süreç ve davranış çalışma olduğunuait insanlar

Şimdi ve eğer SADECE Yukarıdaki cevap, kodumun cevabı kabul edeceği tüm anahtar kelimeleri içerir. Umarım bununla açıklığa kavuşumdur.

Düzeltme: Yardımlarınız için hepinize teşekkür ederiz. Tüm cevaplar onaylandı ve hızlı cevaplar için herkese teşekkür ediyorum. Herhangi bir koda kolayca uyarlanabilen cevabı seçtim. :)

cevap

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

Sen gibi LINQ yöntemlerden bazılarını kullanabilirsiniz: function listedeki öğelerin tümü için geçerlidir döndüğünde

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

All yöntem true döndürür. Entities kullanarak

2

Bu yardımcı olacaktır:

string text = "Psychology is the study of mental process and behaviour of humans"; 
bool containsAllKeyWords = KeyWords.All(text.Contains); 
İlgili konular