我正在使用优秀的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”字段不以 QuotedChar在第3行。你可以使用 FieldQuoted(QuoteMode.OptionalForRead) 允许可选的引用字段
切换到QuoteMode.OptionalForRead
将失败,ID为121错误:
字段TEXT被引用但是 引用char:“不是就在之前 separator(您可以使用[FieldTrim]) 避免这个错误)
那么如何处理一个没有引号的空字段的csv和文本中带引号的带引号的文本字段?
答案 0 :(得分:9)
这看起来像是我们不支持的情况,让我添加一个测试用例并使其在两种模式下都能正常工作,对于第一个我们需要验证语义是否正确的情况,即。如果QuoteMode.AlwaysQuoted可以允许,,或必须是“”,但第二个选项必须工作:) 干杯