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

13

我希望能够检查字符串是否包含列表中的所有值;只有在您的答案中包含列表中的所有“关键词”时,它才会给出“正确答案”。这是我尝试过的东西(没有检查所有数组,只接受一个)。下面是我尝试的代码:

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

我想要做的基本上是:

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

关键词列表: 研究,精神过程,行为,人类

答案:心理学是关于人类精神过程行为研究

现在只有当上面的答案包含所有关键字时,我的代码才会接受答案。希望我已经表达清楚了。

编辑:非常感谢大家的帮助。所有答案都已得到投票,我感谢每个人的迅速回答。我投票支持可以轻松适应任何代码的答案。 :)

3个回答

18

使用LINQ:

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

6
这应该会有所帮助:
 string text = "Psychology is the study of mental process and behaviour of humans";
 bool containsAllKeyWords = KeyWords.All(text.Contains);

2

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

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

All 方法会在列表中的所有项都返回 true 时返回 true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接