use*_*646 3 .net vb.net tab-delimited
以下是我在项目中使用的一段代码:
Using Reader As New Microsoft.VisualBasic.FileIO.TextFieldParser(OpenFileDialog1.FileName.ToString())
Reader.TextFieldType = FileIO.FieldType.Delimited
Reader.SetDelimiters("\t")
Dim currentRow As String()
Dim valueArray() As Double = {0, 0, 0, 0}
Dim power3, power2, power1, constVar As Double
power3 = 0.0
power2 = 0.0
power1 = 0.0
constVar = 0.0
While Not Reader.EndOfData
Try
currentRow = Reader.ReadFields()
Dim currentString As String
Dim i As Integer = 0
Dim j As Integer = 0
For Each currentField As String In currentRow
currentString = currentField(0)
MsgBox(currentField)
MsgBox(currentString)
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
End Try
End While
End Using
Run Code Online (Sandbox Code Playgroud)
我正在阅读的文本文件包含用制表符分隔的浮点值,如下所示:
0.5 0.6 0.7 0.8
但是,现在,当我运行代码时,我将完整的行作为字符串 "0.5 0.6 0.7 0.8"
我无法提取每个浮点值.请建议一些提取每个值的方法,以便我可以单独存储它们.
本TextFieldParser
类应该裂开每行对你的所有字段.如果没有这样做,那是因为你还没有正确设置它.在这种情况下,看起来您的问题是以下行:
Reader.SetDelimiters("\t")
Run Code Online (Sandbox Code Playgroud)
虽然这种字符串文字语法可以在C#和其他类似语言中使用,但这在VB.NET中不起作用.反斜杠字符不是VB.NET中的转义字符,因此字符串与您键入的字符串完全相同.因此,TextFieldParser
它正在寻找一个由反斜杠后跟字母t而不是单个制表符组成的双字符字符串.如果你想使用制表符作为分隔符,因为我强烈怀疑你的意图,那么,在VB.NET中,你需要这样做:
Reader.SetDelimiters(ControlChars.Tab)
Run Code Online (Sandbox Code Playgroud)