1

我想阅读每一行并查找我的行是否显示“Project”,然后以该行的子字符串(子字符串,8 - Project 一词之后的任何内容)为例,并将其复制到每一行的每一行的末尾事后一行,直到新行显示“项目”。它应该一直循环到我的文件结束。这就是我到目前为止所拥有的。我的脚本停止并仅显示正在读取的第一行。

   private void CreateFile_Click(object sender, EventArgs e)
    {

        try
        {
            var list = new List<string>();

            using (var sr = new StreamReader("C:\\File1.txt"))
            {
                string line;

                if ((line = sr.ReadLine()) == " PROJECT")
                {

                    while ((line = sr.ReadLine()) != null)
                    {
                        list.Add(line + "DATA");
                    }
                }
                else
                {
                    list.Add(line);
                }
            }

            TextBox.Text = string.Join(Environment.NewLine, list.ToArray());

        }
        catch (Exception ex)
        {
            MessageBox.Show("An error has occurred" + ex.Message);
        }
    }
4

1 回答 1

0

也许我已经了解您的要求:

using (var sr = new StreamReader("C:\\File1.txt"))
{
    string line;
    string currentProject = null;
    while ((line = sr.ReadLine()) != null)
    {
        int index = line.IndexOf(" PROJECT", StringComparison.OrdinalIgnoreCase);
        if (index >= 0)
            currentProject = line.Substring(index + 9);
        else
            list.Add(string.Format("{0} {1}",line, currentProject));
    }
}

您有两个ReadLineif读者推进到下一行。

于 2013-09-05T15:50:15.913 回答