使用FileHelpers处理引号

edo*_*oft 10 csv quotes import filehelpers

我正在使用优秀的FileHelpers库导入许多csv文件,但遇到了问题.我有一个带有这三个示例行的csv文件

id,text,number
120,"good line this one",789
121,""not good" line", 4456
122,,5446
Run Code Online (Sandbox Code Playgroud)

和这个(例子)类

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

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

    public Int32? NUMBER;
  }
Run Code Online (Sandbox Code Playgroud)

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

字段'TEXT'不是以第3行的QuotedChar开头.您可以使用FieldQuoted(QuoteMode.OptionalForRead)来允许可选的引用字段

切换到QuoteMode.OptionalForRead将失败,ID为121错误:

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

那么如何处理一个没有引号的空字段的csv和文本中带引号的带引号的文本字段?

Mar*_*eli 9

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

  • 在检查代码并添加TestCase之后,问题是"必须跳过"引用字段内部,即.必须在.net中出现两次像@"".在你的行中你的例子必须是:121,"""不好""行",4456无论如何,我们可以添加一个新的模式或参数,以允许更轻松地检查引用的字符串问题可能是例如121,""不好",行",4456 (2认同)