我有一个用逗号分隔的
.csv
文件,并用 ''
引用字符串。问题是当引号字符串内有一个 "
或 '
时,我不知道如何解决这个问题。有什么解决方案可以忽略引用文本中的 '
和 "
吗?
例如
'this is your's 25" string'
我的配置代码是
CsvConfiguration csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ",",
HasHeaderRecord = true,
Quote = '\'',
};
抓住
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; }
}