使用 CsvHelper 加载无效 csv 时出现问题

问题描述 投票:0回答:1

我有一个用逗号分隔的

.csv
文件,并用
''
引用字符串。问题是当引号字符串内有一个
"
'
时,我不知道如何解决这个问题。有什么解决方案可以忽略引用文本中的
'
"
吗?

例如

'this is your's 25" string'

我的配置代码是

CsvConfiguration csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Delimiter = ",",
    HasHeaderRecord = true,
    Quote = '\'',
};
c# .net csvhelper
1个回答
0
投票

抓住

BadDataFound
就可以接近。不幸的是,如果引号内有换行符(其中也存在错误数据),它可能会损坏数据或引发异常。引号内的分隔符也有可能无法正确处理。

void Main()
{
    List<(int,string)> badRecords = new List<(int,string)>();
    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        Quote = '\'',
        Escape = '\'',
        BadDataFound = args => badRecords.Add((args.Context.Parser.Row, args.RawRecord))
    };
    
    using (var reader = new StringReader("Id,MyProperty\n1,'this is, your's 25\" string'"))
    using (var csv = new CsvReader(reader, config))
    {
        var records = csv.GetRecords<Foo>().ToList();
    }
    
    foreach (var record in badRecords)
    {
        Console.WriteLine("Bad record at Row: {0}, RawRecord: {1}", record.Item1, record.Item2);
    }   
}

public class Foo
{
    public int Id { get; set; }
    public string MyProperty { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.