我有一个名为games.txt的文本文件,其中包含许多计算机游戏匹配的详细信息。每行代表:
Player1Score, Player1Name, Player1Age, Player 2Score, Player2Name, Player2Age
以下是3行的示例(共有150行):
1, John, 32, 5, Albert, 54
3 Lisa, 33, 2, Michael, 36
4 Jessica, 24, 1 Robert, 32
我想将它们分配给一个结构数组,其中每个元素使用StreamReader有6个成员变量。这是结构变量:
Structure gameDetails
Public Player1Score As Integer
Public Player1Name As String
Public Player1Age As Integer
Public Player2Score As Integer
Public Player2Name As String
Public Player2Age As Integer
End Structure
我知道使用逗号作为分隔符,我可以将每个变量记录为数组中的不同元素:
Dim game() as String
game() = inFile.ReadLine.Split(","c)
会导致以这种方式分配每个元素:
game(0) = 1
game(1) = John
game(2) = 32
等。
有没有办法可以直接将所有成员变量分配给每个元素?也许每个逗号分隔成员变量,新行表示新元素?不幸的是,我不熟悉语法/命令,所以我不知道如何处理它。
请注意,我无法对任何内容进行硬编码,因为应用程序旨在从.txt中获取所有数据。
答案 0 :(得分:0)
您是否可以尝试创建一个方法作为结构的一部分,如下所示:
public Sub MapLineEntry(targetLine() As String)
Player1Score = CInt(targetLine(0))
Player1Name = targetLine(1)
Player1Age = CInt(targetLine(2))
Player2Score = CInt(targetLine(3))
Player2Name = targetLine(4)
Player2Age = CInt(targetLine(5))
End Sub
您可能希望确保字符串数组具有正确数量的元素,但这将是一个开始。
答案 1 :(得分:0)
只是想说我找到了一种方法,虽然我不确定它有多高效。我最终将每行的每个部分(用逗号分隔)放到一个数组上。然后,我将数组分配给每个成员变量。然后我将它循环为每个变量执行它:
Dim inFile As System.IO.StreamReader
inFile = New IO.StreamReader("Games.txt")
If IO.File.Exists("Games.txt") Then
Dim upperbound As Integer = Games.GetUpperBound(0)
For i As Integer = 0 To upperbound
'auxilary string
Dim line(6) As String
line = inFile.ReadLine.Split(","c)
Games(i).Player1Score = CInt(line(0))
Games(i).player1Name = line(1)
Games(i).player1Age = CInt(line(2))
Games(i).player2Score = CInt(line(3))
Games(i).player2Name = line(4)
Games(i).player2Age = CInt(line(5))
Next i
End If
谢谢你的帮助!