如何解决使用 CSVHelper 解析内容中带有引号的管道分隔文件
我有一个外部生成的管道分隔文件,我正在尝试使用 .NET CSVHelper 对其进行解析并输入 sql 数据库,但我发现了一个问题。主要问题是内容中有引号,但分隔符是管道,引号没有转义。
ID|Price|Description|stock
133|55.89|Standard Electric Drill|23
134|3.40|3.5" Drill Bit|56
我已将分隔符设置为管道,但是当它到达描述中带有引号的记录(在本例中为 ID 134,带有引号“表示英寸)时出错。错误建议将 BadDataFound 设置为 Null,但这只会忽略记录?
是否有任何我遗漏的配置允许这样做?或者最好的方法是简单地用 {quote} 或其他东西替换引号,解析它然后在将其输入数据库之前替换回来?
解决方法
只要没有字段包含管道符或换行符,NoEscape
模式就应该有效。
void Main()
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Mode = CsvMode.NoEscape,Delimiter = "|"
};
using (var reader = new StringReader("ID|Price|Description|stock\n133|55.89|Standard Electric Drill|23\n134|3.40|3.5\" Drill Bit|56"))
using (var csv = new CsvReader(reader,config))
{
var records = csv.GetRecords<Foo>().Dump();
}
}
public class Foo
{
public int ID { get; set; }
public string Price { get; set; }
public string Description { get; set; }
public int stock { get; set; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。