gpt4 book ai didi

vb.net - TextFieldParser 类

转载 作者:行者123 更新时间:2023-12-02 01:08:56 30 4
gpt4 key购买 nike

我正在使用 TextFieldParser 类来读取逗号分隔值 (.csv) 文件。此文件中的字段用双引号引起来,例如 "Field1","Field2"

因此,为了读取文件,我将 TextFieldParser 对象的 HasFieldsEnheldInQuotes 属性设置为 true。但是,当任何字段开头包含双引号 (`"+ ) 时,我会收到 MalformedLineException 错误。

示例:""Field2"with extra" 在这里,我应该看到 "Field2"with extra 作为输出。

但是,如果 " 位于除第一个位置之外的任何位置,那么它就可以正常工作。就像 "Field2 "with"additional" 的行工作得很好,并给了我 Field2 "with"additional作为输出。

有人有同样的问题吗?有什么办法可以解决这个问题吗?

这是我的代码:

Private Sub ReadTextFile(ByVal txtFilePath As String)
Dim myReader As tfp = New Microsoft.VisualBasic.FileIO.TextFieldParser(txtFilePath)
myReader.Delimiters = New String() {","}
myReader.TextFieldType = FileIO.FieldType.Delimited
myReader.HasFieldsEnclosedInQuotes = True
myReader.TrimWhiteSpace = True
Dim currentRow As String()
Dim headerRow As Integer = 0

While Not myReader.EndOfData
Try
currentRow = myReader.ReadFields()

'Read Header
If (headerRow = 0) Then
'Do work for Header Row
headerRow += 1
Else
'Do work for Data Row
End If

Catch ex As Exception
Dim errorline As String = myReader.ErrorLine
End Try
End While

End Sub

这是我在 csv 文件中的数据:

"Column1","Column2","Column3""Value1","Value2",""A" Block in Building 123"

最佳答案

您的示例 ""A"Block" 是格式错误的 CSV;因此,TextFieldParser 完全有权拒绝它。 CSV standard说:

7.  If double-quotes are used to enclose fields, then a double-quote
appearing inside a field must be escaped by preceding it with
another double quote. For example:

"aaa","b""bb","ccc"

如果您对数据进行了正确编码,即...

"Column1","Column2","Column3"
"Value1","Value2","""A"" Block in Building 123"

... TextFieldParser 工作正常并正确返回 123 号楼的“A” block

因此,第一步是告诉生成 CSV 文件的人创建一个有效的 CSV 文件,而不是看起来像 CSV 但不是的文件。

如果您无法做到这一点,您可能需要对文件进行两次遍历:

  • 通过将文件转换为“有效”的 CSV 文件来修复该文件(例如,将后面或前面没有逗号的引号替换为两个引号)。
  • 然后,TextFieldParser 就可以轻松解析“有效”的 CSV 文件。

关于vb.net - TextFieldParser 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588454/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com