删除文本文件中的空白行

时间:2011-06-25 19:35:04

标签: c# .net string string-parsing

如何从C#中的文本文件中删除空行?

4 个答案:

答案 0 :(得分:25)

如果文件很小:

var lines = File.ReadAllLines(fileName).Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines(fileName, lines);

如果档案很大:

var tempFileName = Path.GetTempFileName();
try
{
    using (var streamReader = new StreamReader(inptuFileName))
    using (var streamWriter = new StreamWriter(tempFileName))
    {
        string line;
        while ((line = streamReader.ReadLine()) != null)
        {
            if (!string.IsNullOrWhiteSpace(line))
                streamWriter.WriteLine(line);
        }
    }
    File.Copy(tempFileName, inptuFileName, true);
}
finally
{
    File.Delete(tempFileName);
}

答案 1 :(得分:9)

File.WriteAllLines(path, File.ReadAllLines(path).Where(l => !string.IsNullOrWhiteSpace(l)));

答案 2 :(得分:3)

将文件的所有内容读入字符串然后运行

string output = null;
try {
    output = Regex.Replace(input, @"^\s*$", "", RegexOptions.Multiline);
} catch (Exception e) {

}

其他类似选项可在How to remove empty lines from a formatted string?

中找到

答案 3 :(得分:1)

对于大型文件或小型文件,使用 LINQ 技术可以非常轻松地实现。 1.说明:它将读取文件并跳过所有空行并将所有数据存储到字符串数组中

                    string[] text = File.ReadAllLines(path with file name).Where(s => s.Trim() != string.Empty).ToArray();
  1. 它将删除该文件。

                    File.Delete(path with file name);
    
  2. 它将创建具有相同名称的新文件并将所有数组数据附加到新文件中

                    File.WriteAllLines(path with file name, text);
    

完整代码

                string[] text = File.ReadAllLines(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString()).Where(s => s.Trim() != string.Empty).ToArray();
                File.Delete(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString());
                File.WriteAllLines(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString(), text);
  1. 问题解决了

谢谢