アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB.NET を知って今日で30日目という初学者です。

付属一覧.csv

品番001, 品番001用付属1, 品番001用付属2, 品番001用付属3
品番002, 品番002用付属1, 品番002用付属2, 品番002用付属3
品番003, 品番003用付属1, 品番003用付属2, 品番003用付属3
品番004, 品番004用付属1, 品番004用付属2, 品番004用付属3
品番005, 品番005用付属1, 品番005用付属2, 品番005用付属3

今、上記のCVSファイル配列に読み込む方法を探っています。

Using MyReader As New TextFieldParser(aFile, Encoding.Default)
  While Not MyReader.EndOfData
    aLines.Add(MyReader.ReadLine())
  End While
End Using

と、ここまでは何とか回答に助けられて到達。
aLines は List です。

しかし、これは一次元配列。

Dim aFields(,) As String
ReDim aFiles(N, M) As String

とやれば、行ではなくフィールドで読めば、二次元配列も可能とは思っています。
しかし、これは N を確定する手続きが必須。

そこで質問は、そうしない妙手に関してです。
宜しくお願いします。

A 回答 (1件)

あー、この間から質問の意図がよく分からなかったから回答してなかったけど,やっと分かった気がする。



Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off 'VB2008から

Class Program
Shared Sub Main()
Dim aLines As System.Collections.Generic.List(Of String())
aLines = New System.Collections.Generic.List(Of String())()
Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\hoge.csv", System.Text.Encoding.Default)
MyReader.SetDelimiters(",")
  While Not MyReader.EndOfData
    aLines.Add(MyReader.ReadFields())
  End While
End Using
System.Console.WriteLine(aLines(0)(0))
System.Console.ReadKey(true)
End Sub
End Class

みたいなことがやりたいのかな?
#僕自身はList(Of String())ではなくList(Of List(Of String))を好むが
利点は特に無い。
    • good
    • 0
この回答へのお礼

完全に目的を達しました。

Sub Main()
  Dim I As Integer
  Dim J As Integer
  Dim aDatas As List(Of String())
  aDatas = New List(Of String())()

  Dim N = CSVReadToArray("D:\Temp\付属一覧.csv", aDatas) - 1

  For I = 0 To N
    For J = 0 To 3
      Debug.Print(aDatas(I)(J))
    Next J
  Next I
End Sub

[デバッグ ウインドウ]
品番001
品番001用付属1
品番001用付属2
品番001用付属3
品番002
品番002用付属1
品番002用付属2
品番002用付属3
品番003
品番003用付属1
品番003用付属2
品番003用付属3
品番004
品番004用付属1
品番004用付属2
品番004用付属3
品番005
品番005用付属1
品番005用付属2
品番005用付属3

今日で一ヶ月一日目という初学者。
正に、何がわかっていないのかがわかっていない状態です。
つたない質問へのバッチリの回答に心からお礼を申し上げます。

お礼日時:2009/02/27 09:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています