2013-02-06 25 views
8

Chcę być w stanie sprawdzić, czy ciąg zawiera wszystkie wartości przechowywanych w wykazie; Dzięki temu uzyskasz tylko poprawną odpowiedź, jeśli w odpowiedzi znajdziesz wszystkie "słowa kluczowe" z listy. Jest coś, co zmęczyłem się, a połowa nie, (nie sprawdza wszystkich tablic, zaakceptuje tylko jeden). Kod Próbowałam:Sprawdź, czy ciąg zawiera wszystkie wejścia na liście

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

Zasadniczo co chcę zrobić, to:

Pytanie: Jaka jest definicja psychologii?

słowa kluczowe w ArrayList: studiów, procesu umysłowego, zachowanie, ludzie

Odpowiedź: Psychologia jest badanie z procesu psychicznego i zachowania z ludzie

teraz wtedy i tylko wtedy th Odpowiedź powyżej zawiera wszystkie kluczowe słowa, mój kod przyjmie odpowiedź. Mam nadzieję, że zrozumiałem to.

Edytuj: Dziękuję wszystkim za pomoc. Wszystkie odpowiedzi zostały przegłosowane i dziękuję wszystkim za szybkie odpowiedzi. Głosowałem za odpowiedzią, którą można łatwo dostosować do dowolnego kodu. :)

Odpowiedz

13

Używanie LINQ:

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

można wykorzystywać niektóre z metod LINQ jak:

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

Sposób All zwraca true, gdy funkcja zwraca wartość true dla wszystkich pozycji na liście.

2

To powinno pomóc:

string text = "Psychology is the study of mental process and behaviour of humans"; 
bool containsAllKeyWords = KeyWords.All(text.Contains); 
Powiązane problemy