文件助手 CSV 解析.如何使用 FieldQuote 属性

本文关键字:何使用 FieldQuote 属性 解析 CSV 文件 | 更新日期: 2023-09-27 18:34:23

我有一个看起来像这样的CSV:

a,b,c
a,b,c
a,"b,c",d

我正在用属性标记分隔类中的第二个字段:

[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)]
public String ExchangeRate;

但是第 3 行仍然"b,c"被解析为 2 个单独的值。

你知道我做错了什么吗?

谢谢

文件助手 CSV 解析.如何使用 FieldQuote 属性

我看不出你的代码有什么问题。 我刚刚检查了:以下程序工作正常:

[DelimitedRecord(",")]
public class MyClass
{
    public string Field1;
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)]
    public string ExchangeRate;
    public string Field3;
}
class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<MyClass>();
        string fileAsString = @"a,b,c" + Environment.NewLine +
                              @"a,b,c" + Environment.NewLine + 
                              @"a,""b,c"",d";
        MyClass[] validRecords = engine.ReadString(fileAsString);
        // Check the ExchangeRate values for rows 0, 1, 2 are as expected
        Assert.AreEqual("b", validRecords[0].ExchangeRate);
        Assert.AreEqual("b", validRecords[1].ExchangeRate);
        Assert.AreEqual("b,c", validRecords[2].ExchangeRate);
        Console.ReadKey();
    }
}