【问题标题】:c# delete line from textbox, and remove blank linec#从文本框中删除行,并删除空行
【发布时间】:2017-08-17 00:08:11
【问题描述】:

我有一个包含文件内容的文本框。我有一个按钮,当它被按下时,它会根据字符串删除一行。代码如下:

    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;
    }

【问题讨论】:

  • 你试过fileContentTextBox.Text = string.Join(Environment.NewLine, lines)吗?

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


【解决方案1】:

替换

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

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

【讨论】:

  • 非常感谢。当我在lines.ForEach(str =&gt; newText += str + Environment.NewLine); 之后添加newText = string.Join(Environment.NewLine , lines); 时,我也为我工作,但我将替换它,谢谢:)
  • @Dr4ken 之所以有效,是因为string.Join 代码通过为 newText 分配一个新值来覆盖您之前的代码
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
相关资源
最近更新 更多