CSVHelper 在读取 csv 之前更改/操作 headers

CSVHelper change/ manipulate headers before reading the csv

我无法控制我们可能获得的 csv 文件,他们有时会在名称中添加额外的“_”或年份,这与我所做的映射不匹配。 尝试过

var config = new CsvConfiguration(cultureInfo)
              {
                  PrepareHeaderForMatch = args => args.Header.Replace("_", " "),
              };
config.PrepareHeaderForMatch = args => Regex.Replace(args.Header, @"2021", string.Empty);
List<CSVInvoiceLineDetail> CSVParsedDataList = new();
using TextReader reader = new StreamReader(file.OpenReadStream());
using var csv = new CsvReader(reader, config);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{                             
    CSVParsedDataList.Add(csv.GetRecord<CSVInvoiceLineDetail>());
    // Do something with the record.
}

但它不起作用 headers 仍然是原来的样子。谁能指出这里做错了什么?

考虑

          var config = new CsvConfiguration(cultureInfo)
          {
              PrepareHeaderForMatch = args => args.Header.Replace("_", " ").Replace("2021","");,
          };

或者,如果您想从 header 中删除所有数字和下划线:

          var config = new CsvConfiguration(cultureInfo)
          {
              PrepareHeaderForMatch = args => Regex.Replace(args.Header, "[0-9_]", "")
          };

请注意,这里将下划线替换为空,而不是 space,因此可能需要对声明的 header 属性进行一些调整