使用writeline删除文本文件c#中的行

时间:2014-05-14 09:32:12

标签: c# visual-studio-2010 file formatting

到目前为止,我正在使用此代码 - 它会写入文件,但不会删除指定的行...任何帮助都会很好...

if (textBox1.Text == "")
{
    MessageBox.Show("Please select a file");
}
else
{
    string line = null;
    StringBuilder sb = new StringBuilder();
    string lineDelete = "hi";

    // Read the file and display it line by line.
    using (System.IO.StreamReader file = new System.IO.StreamReader(textBox1.Text)){
    using (System.IO.StreamWriter writer = new System.IO.StreamWriter("C:\\test3.txt"))
    {     
        while ((line = file.ReadLine()) != null)
        {
            if (String.Compare (line, lineDelete) == 0)
                continue;
            writer.WriteLine(line);
        }

        MessageBox.Show("Formatting Complete");

        // Suspend the screen.      
    }
}

1 个答案:

答案 0 :(得分:3)

"它没有删除指定的行" 有点误导,不是吗?您正在编写从file1到file2的行,将省略"hi"行。所以你忽略,而不是删除那些行。那是你要的吗?另请注意,C#区分大小写,并且可能还有一些特殊字符,您无法直接看到像白色空格。

因此,您可以使用Trim从行的开头和结尾删除空格,并且可以使用String.Equals来比较不区分大小写:

while ((line = file.ReadLine()) != null)
{
    line = line.Trim();
    if(line.Equals(lineDelete, StringComparison.CurrentCultureIgnoreCase));
        continue;
    else
        writer.WriteLine(line);
}