Заполните массив переменных структуры, прочитав текстовый файл с разделителями

У меня есть текстовый файл с именем 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

Я хочу назначить их структурному массиву, в котором каждый элемент имеет 6 переменных-членов, используя StreamReader. Вот структурная переменная:

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.

2 ответа

Просто хотел сказать, что я понял метод, хотя я не уверен, насколько он эффективен. Я закончил тем, что поместил каждую часть каждой строки (разделенных запятыми) в массив. Затем я назначил массив каждой из переменных-членов. Затем я сделал это для каждой переменной:

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

Спасибо вам за помощь!

Не могли бы вы попытаться создать метод как часть вашей структуры, который выглядит примерно так:

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

Вы хотели бы убедиться, что строковый массив имеет правильное количество элементов, но это будет начало.

Другие вопросы по тегам