13

C#でテキストファイルから空白行を削除するにはどうすればよいですか?

4

4 に答える 4

35

ファイルが小さい場合:

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);
}
于 2011-06-25T19:38:53.223 に答える
11
File.WriteAllLines(path, File.ReadAllLines(path).Where(l => !string.IsNullOrWhiteSpace(l)));
于 2011-06-25T19:39:17.210 に答える
3

ファイルのすべての内容を文字列に読み取ってから実行する

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

}

他の同様のオプションは、フォーマットされた文字列から空の行を削除する方法で見つけることができますか?

于 2011-06-25T19:46:41.210 に答える
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. 問題が解決しました

ありがとうございました

于 2019-12-11T13:09:09.627 に答える