12

我正在使用出色的 FileHelpers 库来导入许多 csv 文件,但遇到了问题。我有一个包含这三个示例行的 csv 文件

id,text,number
120,"good line this one",789
121,""not good" line", 4456
122,,5446

和这个(示例)类

  [IgnoreFirst(1)]
  [IgnoreEmptyLines()]
  [DelimitedRecord(",")]
  public sealed class JOURNAL
  {
    public Int32 ID;

    [FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]
    public string TEXT;

    public Int32? NUMBER;
  }

问题QuoteMode.AlwaysQuoted在于 ID 122 将失败并出现错误:

字段“TEXT”不以第 3 行的 QuotedChar 开头。您可以使用 FieldQuoted(QuoteMode.OptionalForRead) 允许可选的带引号字段

切换到QuoteMode.OptionalForRead将失败,并出现 id 121 错误:

字段 TEXT 被引用,但被引用的 char: " not 就在分隔符之前(您可以使用 [FieldTrim] 来避免此错误)

那么如何处理包含没有引号的空字段和在文本中带有额外引号的带引号的文本字段的csv?

4

1 回答 1

9

这看起来像是一个我们不支持的案例,让我添加一个测试案例并让它在两种模式下都工作,对于第一个我们需要验证语义是否正确的案例,即。如果 QuoteMode.AlwaysQuoted 可以允许,或必须是“”,但第二个选项必须有效:) 干杯

于 2011-02-22T11:49:37.603 回答