检查字符串是否包含列表中的所有输入

时间:2013-02-06 11:46:32

标签: c#

我希望能够检查字符串是否包含列表中保存的所有值; 因此,如果您在答案中列出了所有“关键词”,它只会给您“正确答案”。 继承人我累了哪一半失败了;(不检查所有阵列,只接受一个)。 代码我累了:

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

基本上我想做的是:

  

问题:心理学的定义是什么?

arraylist中的关键词:学习,心理过程,行为,人类

  

答案:心理学是人类的心理过程行为研究

现在,如果以上答案包含所有关键词,我的代码会接受答案。 我希望我对此很清楚。

编辑:谢谢大家的帮助。所有答案都已经通过投票,我感谢大家的快速解答。我投了答案,可以很容易地适应任何代码。 :)

3 个答案:

答案 0 :(得分:15)

使用LINQ:

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

答案 1 :(得分:4)

这应该有所帮助:

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

答案 2 :(得分:2)

您可以使用一些LINQ方法,例如:

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

当函数为列表中的所有项返回true时,All方法返回true。