FieldQuoted似乎无法正常工作

美子子

我在VB .net中使用FileHelpers 3.3。我尝试寻找答案已有一段时间,但是我发现的所有信息都涉及到我没有遇到的行为。因此,我开始怀疑FileHelpers中的错误。

我有一个非常简单的CSV:

Description,Transaction Date,Transaction Time
01567,"Sep 1, 2018",12:47:32 AM PDT
01567,"Sep 1, 2018",12:47:32 AM PDT
81475,"Sep 1, 2018",12:52:18 AM PDT

因此,我在VB中声明了一个包含这些数据的类:

<DelimitedRecord(","), IgnoreFirst(1)>
Public Class Sale
    Public Property description() As String
    <FieldQuoted(QuoteMode.AlwaysQuoted)>
    Public Property transactionDate() As String
    Public Property transactionTime() As String
End Class

当我使用以下命令读取文件时:

Dim engine As FileHelperEngine(Of Sale) = New FileHelperEngine(Of Sale)
Dim records = engine.ReadFile("D:\Projects\test.txt")

我收到以下错误:FileHelpers.BadUsageException:'Line:2 Column:32. Delimiter','在最后一个字段'_transactionTime'之后找到(文件错误,或者您需要将一个字段添加到记录类中)'

这是由第二个字段内的逗号引起的。如果我删除逗号,则一切正常。但是,即使我删除了逗号,transactionDate字符串仍然被引号引起来。

根据我在论坛上阅读的内容,FieldQuoted应该:

  • 正确处理引号中的逗号
  • 删除处理后的字符串中的引号

但这是行不通的。看起来FieldQuoted指令被简单地忽略了。我可以尝试使用BeforeReadRecord事件来处理这些情况,但我认为FieldQuoted正是为了处理此用例而创建的。你能告诉我是否错过了明显的事情吗?

非常感谢你!

shamp00

FileHelpers需要的字段不是VB中的属性。以下工作符合预期。

<DelimitedRecord(","), IgnoreFirst(1)>
Public Class Sale
    Public description As String
    <FieldQuoted(QuoteMode.AlwaysQuoted)>
    Public transactionDate As String
    Public transactionTime As String
End Class

最初FileHelpers仅支持字段。在版本3中添加了对C#自动实现属性的支持,但VB.NET中尚不支持属性。这里有一个长期未解决的Github问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章