Visual Basic 拆分函数
Visual Basic split function
好的,现在我没有收到错误,但不是将所有内容都张贴在列表框中,而是仅包含 .txt 文件中的第一行文本。这也是我改的代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim inFile As IO.StreamReader
If IO.File.Exists("StudentList.txt") = True Then
inFile = IO.File.OpenText("StudentList.txt")
For index As Integer = 0 To inFile.Peek = -1
Dim splits = inFile.ReadLine.Split(","c)
Member(index).ID = splits(0)
Member(index).lastName = splits(1)
Member(index).firstName = splits(2)
Member(index).middleName = splits(3)
Member(index).grade = splits(4)
Member(index).period = splits(5)
ListBox1.Items.Add(Member(index).ID.PadLeft(10) & " " & Member(index).lastName & " " & Member(index).firstName)
Next
inFile.Close()
Else
MessageBox.Show("error", "error", MessageBoxButtons.OK)
End If
End Sub
问题是您试图将字符串数组分配给 Member
。也就是说,您有:
Member(index) = infile.ReadLine.Split(",", c);
您需要分配每个字段:
Dim splits = infile.ReadLine.Split(",", c);
Member(index).ID = splits(0);
Member(index).lastName = splits(1);
... etc.
OP 编辑后更新
我怀疑现在的问题是您的 For
循环只执行了一次,或者 index
没有递增。我不知道你是从哪里想出那个靠不住的 infile.Peek = -1
东西的,但我怀疑它并不像你想象的那样起作用。使用更传统的东西,比如这样。
Dim index As Integer = 0
For Each line As String In File.ReadLines("StudentList.txt")
Dim splits = line.Split(",", c)
Member(index).ID = splits(0)
' etc.
ListBox1.Add(...)
Index = Index + 1
Next
好的,现在我没有收到错误,但不是将所有内容都张贴在列表框中,而是仅包含 .txt 文件中的第一行文本。这也是我改的代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim inFile As IO.StreamReader
If IO.File.Exists("StudentList.txt") = True Then
inFile = IO.File.OpenText("StudentList.txt")
For index As Integer = 0 To inFile.Peek = -1
Dim splits = inFile.ReadLine.Split(","c)
Member(index).ID = splits(0)
Member(index).lastName = splits(1)
Member(index).firstName = splits(2)
Member(index).middleName = splits(3)
Member(index).grade = splits(4)
Member(index).period = splits(5)
ListBox1.Items.Add(Member(index).ID.PadLeft(10) & " " & Member(index).lastName & " " & Member(index).firstName)
Next
inFile.Close()
Else
MessageBox.Show("error", "error", MessageBoxButtons.OK)
End If
End Sub
问题是您试图将字符串数组分配给 Member
。也就是说,您有:
Member(index) = infile.ReadLine.Split(",", c);
您需要分配每个字段:
Dim splits = infile.ReadLine.Split(",", c);
Member(index).ID = splits(0);
Member(index).lastName = splits(1);
... etc.
OP 编辑后更新
我怀疑现在的问题是您的 For
循环只执行了一次,或者 index
没有递增。我不知道你是从哪里想出那个靠不住的 infile.Peek = -1
东西的,但我怀疑它并不像你想象的那样起作用。使用更传统的东西,比如这样。
Dim index As Integer = 0
For Each line As String In File.ReadLines("StudentList.txt")
Dim splits = line.Split(",", c)
Member(index).ID = splits(0)
' etc.
ListBox1.Add(...)
Index = Index + 1
Next