首页 > 解决方案 > 如何使用 foreach 循环从数组中选择所需的单词?

问题描述

我想从给定的输入代码中选择所有类的类名。但是我的代码只选择一个类名。我该怎么办?

我正在使用 C# 处理 Windows 窗体。我试过用foreach循环来做,但它不工作

private void btnDetect_Click(object sender, EventArgs e)
{
  // splitting code
  string mystr = richTextBox1.Text;
  if (mystr.ToLower().Contains("class"))
  {
    string[] splitText = mystr.Split(new char[] { ' ' });
    foreach (string word in splitText)
    {
      int classindex = Array.FindIndex(splitText, r => r.Contains("class"));
      string className = splitText[classindex + 1];
      MessageBox.Show(className);
    }
  }
  else
    MessageBox.Show("class not found");
  }
}

我希望输出显示输入中的所有类名,但我得到的输出只是第一个类名

标签: c#

解决方案


Array.FindIndex总是返回第一个索引,因为条件永远不会改变。

你可以使用:

string[] tokens = mystr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<string> classList = new List<string>();
for (int i = 0; i < tokens.Length - 1; i++)
{
    if (tokens[i].Equals("class", StringComparison.InvariantCultureIgnoreCase))
        classList.Add(tokens[++i]);
}

推荐阅读