c#从文本框中删除行,并删除空行

时间:2017-08-17 00:08:12

标签: c# string file windows-forms-designer

我有一个包含文件内容的文本框。我有一个按钮,当按下它时,它会删除一个基于字符串的行。这是代码:

    private void deleteModuleButton_Click(object sender, EventArgs e)
    {
        String newText = String.Empty;
        List<String> lines = fileContentTextBox.Text.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
        lines.RemoveAll(str => str.Contains(deleteModuleComboBox.Text));
        lines.ForEach(str => newText += str + Environment.NewLine);
        fileContentTextBox.Text = newText;
    }

但是,当删除一行时,它会在文本框的底部留下一个空行。这个问题是,文件保存时。由于额外的空行,它无法再次读取。当我尝试打开已删除行后保存的文件时出现此错误:“其他信息:索引超出了数组的范围”。当我读取文件时,我将每一行作为字符串,然后使用“(',')”分割该行。

有没有办法更改代码以便它需要“newText”,并添加新行,但不是最后一个字符串?或者其他一些方式,只是为了最后没有空白行。

由于

编辑:我开始工作了(谢谢L.B)

更新并运行代码:

    private void deleteModuleButton_Click(object sender, EventArgs e)
    {
        String newText = String.Empty;
        List<String> lines = fileContentTextBox.Text.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
        lines.RemoveAll(str => str.Contains(deleteModuleComboBox.Text));
        newText = string.Join(Environment.NewLine, lines);
        fileContentTextBox.Text = newText;
    }

1 个答案:

答案 0 :(得分:2)

替换

lines.ForEach(str => newText += str + Environment.NewLine);

newText = string.Join(Environment.NewLine , lines);