投稿者 カラス  (社会人) 投稿日時 2014/7/14 23:38:14
お世話になっております。
Visual Basic 2010を使用しています。

csvから値を読み込み、配列を使ってデータを取り出したいのですが、中々うまくいきません。
「インデックスが配列の境界外です。」と出てしまいます。

タブ句切りをした後に、さらに「\\」で区切って、さらに「\\」で区切った値を分けて使用したいです。

下記の条件も加えてやっています。
・Dataが配列1~5まであるとして、値がなければスルー
・値があればaに値を追加していき、その値を最後に別のcsvに書き込む
・後ろの値から書き込む

test.csv
---------------------------------------------------------
"名前""説明"
"User1" "テスト1"
"User2\\パスワード1" "テスト2"
"User3\\パスワード2\\コメント" "テスト3"
"User4\\パスワード3" "テスト4"
....
---------------------------------------------------------

        Dim Reader As New System.IO.StreamReader("C:\test\test.txt")
        Dim Writer As New StreamWriter("C:\test\test2.txt")

        Dim a As String = Nothing
        Dim Items()
        Dim Line As String = Reader.ReadLine 'csv1行読み込み

        Line = Reader.ReadLine 'ファイルの1行目を飛ばす

        Do Until IsNothing(Line) 'データがなくなるまで読み込む

            Items = Line.Split(vbTab) 'タブ句切り
            Dim Data() = Split(Items(0), "\\") '名前の方の値を\\句切り

            For i As Integer = 4 To 0 Step -1
                If Data(i).Length <> Nothing Then
                    a = a + "データ=" + Data(i)
                Else
                End If
            Next

            Writer.WriteLine("ユーザ情報=" & a & ",説明=" & Items(1) & "")

            Line = Reader.ReadLine '次の行を読み込む
        Loop

        Reader.Close()
        Writer.Close()

助言よろしくお願いします。