TextFieldParser 不跳过 .CommentTokens-Lines
TextFieldParser not skipping .CommentTokens-Lines
在 this 之后,我使用 TextFieldParser
读取 csv 文件:
Sub imp1(path As String)
With New TextFieldParser("C:\matrix1.csv")
.TextFieldType = FileIO.FieldType.Delimited
.Delimiters = New String() {";"}
.CommentTokens = New String() {"'"}
Debug.Print(.ReadToEnd)
' some more code to read the contents into a 2d-array
End with
End Sub
设置 .CommentTokens = New String() {"'"}
后,我希望跳过带有前导单引号的行。
但是,据我所知,读取如下所示的 csv 时没有任何区别:
'comment1
1;0.5;0.9;0.3
0.5;1;0.6;0.2
0.9;0.6;1;0.1
0.3;0.2;0.1;1
我尝试用几个常见的注释字符(#
、\
、\*
)替换单引号 '
,包括和不包括以下空格 -仍然没有得到想要的结果。
在您的代码中,您使用的是 TextFieldParser.ReadToEnd
,它只是 returns 完整的剩余文本并且不会忽略注释。这被记录在案:
The ReadToEnd method does not ignore blank lines and comments.
如果您使用 ReadFields
注释将被忽略(MS 示例):
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
' Include code here to handle the row.
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message &
" is invalid. Skipping")
End Try
End While
在 this 之后,我使用 TextFieldParser
读取 csv 文件:
Sub imp1(path As String)
With New TextFieldParser("C:\matrix1.csv")
.TextFieldType = FileIO.FieldType.Delimited
.Delimiters = New String() {";"}
.CommentTokens = New String() {"'"}
Debug.Print(.ReadToEnd)
' some more code to read the contents into a 2d-array
End with
End Sub
设置 .CommentTokens = New String() {"'"}
后,我希望跳过带有前导单引号的行。
但是,据我所知,读取如下所示的 csv 时没有任何区别:
'comment1
1;0.5;0.9;0.3
0.5;1;0.6;0.2
0.9;0.6;1;0.1
0.3;0.2;0.1;1
我尝试用几个常见的注释字符(#
、\
、\*
)替换单引号 '
,包括和不包括以下空格 -仍然没有得到想要的结果。
在您的代码中,您使用的是 TextFieldParser.ReadToEnd
,它只是 returns 完整的剩余文本并且不会忽略注释。这被记录在案:
The ReadToEnd method does not ignore blank lines and comments.
如果您使用 ReadFields
注释将被忽略(MS 示例):
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
' Include code here to handle the row.
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message &
" is invalid. Skipping")
End Try
End While