我正在解析一个文件,其中包含以下数据作为一行的一部分。
12.0000¦6.11000¦LB¦9189AD510001¦Photo Insert 5\" x 5\"Iron¦¦¦23.00¦13.50¦5.00¦IN¦1726.31250¦
我在解析器上有以下配置
var parserConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = fileMap.Delimiter,
HasHeaderRecord = hasHeader,
Mode = CsvMode.RFC4180,
Escape = EscapeCharacter
};
其中,是破管道(β),转义字符是反斜杠('')。当我解析数据时,它在包含9189AD510001
的字段处停止解析,并表现得好像后面的一切都不存在。
我如何转义双引号,使文件将正确解析?我还尝试用另一个双引号来转义双引号,从而得到(“”)。
我需要使用RFC 4180模式,因为我还解析包含用引号5,6,52,in,1560,"cubic in",10,lb
Package 的字段的文件。
编辑:示例Fiddle我们正在阅读多个文件结构并动态地进行所有Map。
1条答案
按热度按时间67up9zun1#
唯一的方法是将
CsvMode
动态传递给CsvConfiguration
。CsvMode.Escape
是专门创建来处理您给出的示例的,其中双引号用反斜杠(或任何其他指定的转义字符)转义,并且该字段不包含在双引号中,根据RFC 4180。不幸的是,没有办法让CsvMode.RFC4180
正确处理这个问题。如果你知道带有破管道的文件总是以这种方式格式化,你可以切换到
fileMap.Delimiter
。