0

次のような音楽のリストを含むテキスト ファイルがあります。

BeginSong{
Song Name
Artist
Genre
}EndSong

これには複数のインスタンスがあります。

BeginSong{との間のテキストを取得し}EndSong、曲の情報を文字列配列に入れたいと思っています。次に、各インスタンスを Artist - Song Name として ListBox に追加したいと思います (その部分は私が理解できると確信しています)。それが明確な説明であったことを願っています。

4

3 に答える 3

1

ReadLine()機能を利用するFileStream

情報の順序は既にわかっているので、すべてのファイル行をループして、対応するプロパティに格納できるはずです。

擬似:

WHILE Reader.Read()
      Store Line in BeginSongTextVariable
      Read Next Line
      Store Line in SongNameVariable
      Read Next Line
      Store Line in ArtistNameVariable
      Read Next Line
      Store Line in GenreVariable
      Read Next Line
      Store Line in EndSongTextVariable
Add The Above Variables in List
End While
于 2013-03-18T02:20:38.890 に答える
0

正規表現を使用する Neolisk からの素晴らしい回答があります。しかし、VB.NET に加えて VB6 タグも含めたので、VB6 ソリューションを試してみます。

文字列の Split 関数を使用して、「両端」で分割できます"BeginSong{""}EndSong"

Dim songInfos As String
Dim firstArray() As String
Dim secondArray() As String
Dim thirdArray() As String
Dim songInfoArray() As String
Dim i As Integer
Dim songCounter As Integer
' to test:
songInfos = songInfos & "BeginSong{" & vbNewLine
songInfos = songInfos & "Song Name1" & vbNewLine
songInfos = songInfos & "Artist1" & vbNewLine
songInfos = songInfos & "Genre1" & vbNewLine
songInfos = songInfos & "}EndSong" & vbNewLine
songInfos = songInfos & "BeginSong{" & vbNewLine
songInfos = songInfos & "Song Name2" & vbNewLine
songInfos = songInfos & "Artist2" & vbNewLine
songInfos = songInfos & "Genre2" & vbNewLine
songInfos = songInfos & "}EndSong"

firstArray = Split(songInfos, "BeginSong{")

songCounter = 0

ReDim songInfoArray(2, 0)

For i = 1 To UBound(firstArray) Step 1
    secondArray = Split(firstArray(i), "}EndSong")
    thirdArray = Split(secondArray(0), vbNewLine)
    songInfoArray(0, songCounter) = thirdArray(1)
    songInfoArray(1, songCounter) = thirdArray(2)
    songInfoArray(2, songCounter) = thirdArray(3)
    songCounter = songCounter + 1
    If i < UBound(firstArray) Then
        ReDim Preserve songInfoArray(2, songCounter)
    End If
Next i

最後の行の後の時計。ReDimmedにするために必要な songInfoArray の構造に注意してください。

ここに画像の説明を入力

于 2013-03-18T18:38:12.990 に答える
0

名前付きグループで正規表現を使用できます。

BeginSong{\n(?<song_name>.*)\n(?<artist>.*)\n(?<genre>.*)\n}EndSong

このようなもの:

Imports System.Text.RegularExpressions
'...
Dim s As New Regex("BeginSong{\n(?<song_name>.*)\n(?<artist>.*)\n(?<genre>.*)\n}EndSong")
Dim mc As MatchCollection = s.Matches(inputFile)
For Each m As Match In mc
  Dim song_name As String = m.Groups("song_name").Value
  Dim artist As String = m.Groups("artist").Value
  Dim genre As String = m.Groups("genre").Value
  'use or store these values as planned
Next
于 2013-03-18T02:27:35.457 に答える