【问题标题】:How to read file from txt file with delimiters, and write it back to new txt file如何从带有分隔符的txt文件中读取文件,并将其写回新的txt文件
【发布时间】:2019-05-24 03:40:55
【问题描述】:

例如,我已经从 txt 文件中获得了数据

Trans ID;Transaction Date;Cashier Name
00001;1 January;Ricky
00001;1 January;Ricky
00002;2 January;Rico

问题是我是这种文件的新手,不知道如何读取并将其导出到具有单独 Trans ID 的新 txt 文件

所以在这个数据中,会有2个文件,第一个文件是00001 Trans ID的列表,第二个文件是00002文件的列表(或更多trans ID来)

我已尝试读取文件

string filename = ("C:\\Users\\Documents\\My Received Files\\txn_success_daily.txt");
            string[] lines = File.ReadAllLines(filename);

            foreach (string line in lines)
            {
                string[] col = line.Split(new char[] { ';' });
            }

但我不知道它是如何工作的,因为它与 excel 不同(基本上我创建应用程序来生成 excel 文件)

我需要将这些数据分成 2 个 txt 文件,因为它包含不同的交易 ID。每个不同的交易 ID,都会创建一个新的 txt 文件并将交易放入其中(包括标题)。

谢谢

【问题讨论】:

  • 请具体说明,不清楚您在问什么。
  • 你应该学习如何将数组中的信息写回文件。

标签: c# flat-file


【解决方案1】:
// read lines
var lines = File.ReadAllLines(@"D:\Tran.txt");

// group by first value
var groups = lines.Skip(1)
                  .Select(x => x.Split(';'))
                  .GroupBy(x => x[0]);

// iterate groups write the joined lines back to a new file with the key name
foreach (var group in groups)
   File.WriteAllLines($@"D:\Tran{group.Key}.txt", group.Select(x => string.Join(";", x)));

加入胡椒和盐调味。

应该注意,您最好使用专用的 CSV 解析器,因为这很容易破坏

【讨论】:

  • 起初我认为File.ReadLines 会更好,但后来我意识到分组无论如何都需要在内存中。
  • sry,因为我从我的主管那里得到了示例数据,它在 .txt 中,这就是为什么我有点困惑,无论如何,非常感谢,我会试试这个
  • @ParrishHusband 我也这么想,如果这是一个巨型文件,那么这可能会导致问题,这需要不同的解决方案
  • 感谢您的解决方案,它确实有效,不知道可以使用类似 linq 的东西
猜你喜欢
  • 2023-02-22
  • 1970-01-01
  • 2018-08-09
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 2022-06-13
相关资源
最近更新 更多