如何添加条件以逐行读取并在每行后附加文本

时间:2013-09-05 15:41:34

标签: winforms c#-4.0

我想读取每一行并查找我的行是否显示“Project”,然后将该行的子字符串(substring,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);
        }
    }

1 个答案:

答案 0 :(得分: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));
    }
}

ReadLine中有两个if,可让读者前进到下一行。