它似乎只能检测/检查列表中的第一个单词。
private bool ContentCheck()
{
List<string> FilteredWords = new List<string>()
{
"duck",
"donkey",
"horse",
"goat",
"dog",
"cat", //list of censored words
"lion",
"tiger",
"bear",
"crocodile",
"eel",
};
foreach (var e in FilteredWords)
{
if (memoEdit1.Text.Contains(e))
{
return true;
}
else
{
return false;
}
}
return false;
}
private void button_click (object sender, EventArgs e)
{
if (ContentCheck() == false)
{
//do something
}
else if (ContentCheck() == true)
{
MessageBox.Show("Error: Offensive word.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
答案 0 :(得分:2)
if
块内的foreach
语句中的两种情况都会产生return
。考虑一下,程序将迭代列表中的第一项,如果它是一个它将返回的脏话,如果不是它将也返回。这两个都将退出代码,因此下一个项永远不会被迭代。
要解决此问题,您需要更改
foreach (var e in FilteredWords)
{
if (memoEdit1.Text.Contains(e))
{
return true;
}
else
{
return false;
}
}
return false;
到
foreach (var e in FilteredWords)
{
if (memoEdit1.Text.Contains(e))
{
return true;
}
}
return false;