FieldQuoted 似乎无法正常工作
FieldQuoted doesn't seem to work properly
我在 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 中声明了一个 class 来包含这些数据:
<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'之后找到(文件有误或需要在记录中添加一个字段class)'
这是由第二个字段中的逗号引起的。如果我删除逗号,一切正常。但即使我删除了逗号,transactionDate 字符串仍然被引号括起来。
根据我在论坛中阅读的内容,FieldQuoted 应该:
- 正确处理引用字段中的逗号
- 删除已处理字符串中的引号
但是没有用。看起来 FieldQuoted 指令被简单地忽略了。我可以尝试使用 BeforeReadRecord 事件来处理这些情况,但我认为 FieldQuoted 正是为处理此用例而创建的。如果我遗漏了一些明显的东西,你能告诉我吗?
非常感谢!
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 issue here.
我在 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 中声明了一个 class 来包含这些数据:
<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'之后找到(文件有误或需要在记录中添加一个字段class)'
这是由第二个字段中的逗号引起的。如果我删除逗号,一切正常。但即使我删除了逗号,transactionDate 字符串仍然被引号括起来。
根据我在论坛中阅读的内容,FieldQuoted 应该:
- 正确处理引用字段中的逗号
- 删除已处理字符串中的引号
但是没有用。看起来 FieldQuoted 指令被简单地忽略了。我可以尝试使用 BeforeReadRecord 事件来处理这些情况,但我认为 FieldQuoted 正是为处理此用例而创建的。如果我遗漏了一些明显的东西,你能告诉我吗?
非常感谢!
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 issue here.