在foreach(单词中的字符串单词)中,如果(if-> true)C#,我该如何转到下一个单词?

时间:2012-06-14 10:00:38

标签: c# .net string

他的想法是输入一个文本文件和一个单词编号。该软件将写入一个新文件,该文件包含文本但每行的单词数量(他输入的内容)以及其他一些细节。

这个想法就是这个,我让他成了黑名单。黑名单从文件加载到富文箱中,并在关闭应用程序时保存。

问题是我已经设置了所有东西(一个检查单词是否在黑盒中的函数)。

软件看起来像这样:

foreach (string word in words)
{
     int blacklist = 0;

     if (FindMyText(word))
     {
           blacklist = 1;
           MessageBox.Show("Current word: " + word + " is blacklisted!");
     }
     else
           MessageBox.Show("Word: " + word);               

     // the code here ... for writing in file and all that

     }

函数FindMyText(word)告诉我这个单词是否在黑名单中。

如果该函数返回true,我想转到下一个单词,但实际上不知道如何执行此操作。

如果你有一些想法,那真的会帮助我。

谢谢你们。

4 个答案:

答案 0 :(得分:1)

在foreach循环或任何其他循环中,您可以使用continue跳到下一次迭代,所以在您的情况下,您可以执行

foreach (string word in words)
{
  var blacklist = 0;
  if (FindMyText(word))
  {
    blacklist = 1;
    MessageBox.Show("Current word: " + word + " is blacklisted!");
    continue;
  } else {
     //...
  }
 }

答案 1 :(得分:1)

您可以添加“继续”关键字以跳到foreach迭代中的下一个元素。

foreach (string word in words)
{
    int blacklist = 0;
    if (FindMyText(word))
    {
        blacklist = 1;
        MessageBox.Show("Current word: " + word + " is blacklisted!");
        // skip to the next element
        continue;
    }

    MessageBox.Show("Word: " + word);
    // the code here ... for writing in file and all that

}

或者你可以分开foreach身体:

foreach (string word in words)
{
    int blacklist = 0;
    if (FindMyText(word))
    {
        blacklist = 1;
        MessageBox.Show("Current word: " + word + " is blacklisted!");
    }
    else
    {
        MessageBox.Show("Word: " + word);
        // the code here ... for writing in file and all that
    }
}

这完全取决于“其他”部分有多长。如果它真的很长,那么使用continue会更具可读性,将重点放在跳过部分上。

答案 2 :(得分:1)

您已经拥有逻辑,只需添加continue

continue语句将控制权传递给它出现的封闭迭代语句的下一次迭代。它采用以下形式:

if (FindMyText(word))
{
  blacklist = 1;
  MessageBox.Show("Current word: " + word + " is blacklisted!");
  continue;
}
else
{
   MessageBox.Show("Word: " + word);
  AddWordToFile(word); // not black listed;
}

http://msdn.microsoft.com/en-us/library/923ahwt1(v=vs.71).aspx

答案 3 :(得分:0)

我不是100%确定我理解,但我认为你想要的是“继续”关键字。

一旦循环的迭代完成,它将再次开始,直到迭代用完为止。

所以在你的IF / Else语句中,你想强制循环进入下一个单词,你输入continue;。这将忽略循环中的所有前面的代码并跳转到下一个迭代。

这有意义吗?