0
テキストファイルを読み込み、「!!!」の文字配列を使用してデータを分割しようとしています。 何かの理由で3でスキップしているので、私はそれに取り組むのに苦労しています。 配列のmd()では、md(0)の適切な文字列を取得していますが、md(1)とmd(2)には内容がありません。しかし、md(3)は分割の第2引数であり、md(6)は分割の第3引数です。 Screenshot of the results and code分割関数が結果をスキップしています。VB.NET
これが呼び出されている全体のサブです:スプリット文字列に複数の文字がある場合
Public Sub recompile()
Try
' Open the file using a stream reader.
Using sr As New System.IO.StreamReader("C:\Users\Connor\Documents\MovieTheaterPro\MovieData.txt")
Dim line As String
Dim inThisRow As Integer = 0
Dim rows As Integer = 0
Dim lineCount = IO.File.ReadAllLines("C:\Users\Connor\Documents\MovieTheaterPro\MovieData.txt").Length
For i As Integer = 0 To lineCount - 1 Step 1
line = sr.ReadLine()
MsgBox(line)
Dim md As String() = line.Split("!!!")
Dim addTo As String = ""
For i2 As Integer = 0 To md.Length - 1 Step 1
addTo += "md(" & i2 & "): " & md(i2) & vbNewLine
Next
MsgBox(addTo)
If inThisRow = 6 Then
rows += 1
inThisRow = 0
End If
Dim pb As New PictureBox
pb.Width = 170
pb.Height = 200
pb.Top = 172 + (rows * 213)
pb.Left = 12 + (227 * inThisRow)
pb.SizeMode = PictureBoxSizeMode.StretchImage
If (md.Length > 0) Then
pb.Image = New System.Drawing.Bitmap(New IO.MemoryStream(New System.Net.WebClient().DownloadData(md(1))))
End If
Me.Controls.Add(pb)
inThisRow += 1
Next
End Using
Catch e As Exception
Console.WriteLine("The file could not be read:")
Console.WriteLine(e)
End Try
End Sub
Split()コールは、あなたが思うように動作しません。 Option Strict Onをソースコードファイルの先頭に置いてコードを練習したいと思うでしょうが、今コンパイラは間違っていることを教えてくれます。代わりにTextFieldParserクラスを使用してください。デバッガを使って練習することもうまくいきますが、それらのMsgBoxコールは苦労して取り組まなければなりません。 –
[String.Split](https://msdn.microsoft.com/en-us/library/tabh47cf(v = vs.110).aspx)の異なるオーバーロードを使用する必要があります。したがって、 'Dim md As String( )= input.Split({"!!!"}、StringSplitOptions.None) '。 –
また、不必要にファイルを2回読み込んでいます。外側の 'For'ループを取り除き、' StreamReader'で 'While'ループを使用してください。 'line = sr.ReadLine()を使用してください。IsNot行中には何もありません。ここにコードの残りの部分End While' –