テキスト ファイルを読み取るために VBA で使用される VB.Net クラスを作成しました。ユーザーがファイル内のどのテーブルを返したいかを指定できるように設定しました。私が行ったことは、テーブルの StringBuilder を構築し、それをギザギザの配列として返すことですが、ビルダーから配列部分への変換を正しく行うことができません。最初のレベルを「NewLine」で分割し、2 番目のレベルを「,」で分割したいと思います。
複数の配列やループを使用しなくても、これは可能ですか?
テキスト ファイルを読み取るために VBA で使用される VB.Net クラスを作成しました。ユーザーがファイル内のどのテーブルを返したいかを指定できるように設定しました。私が行ったことは、テーブルの StringBuilder を構築し、それをギザギザの配列として返すことですが、ビルダーから配列部分への変換を正しく行うことができません。最初のレベルを「NewLine」で分割し、2 番目のレベルを「,」で分割したいと思います。
複数の配列やループを使用しなくても、これは可能ですか?
ネストされたリストとジェネリックを使用して、ジャグ配列を表すことができます。外側 (行) は一般的なリストで、内側 (列) は文字列のリストです。
他のアプローチでは XML や LINQ を利用できますが、効率は低下します。
これにより、ジャグ配列が作成されます。
Dim myArray = (From row In myStringBuilder.ToString().Split({vbCrLf}, StringSplitOptions.None)
Select (From col In row.Split(","c)
Select col
).ToArray()
).ToArray()
説明:
myStringBuilder.ToString()
Split({vbCrLf}, StringSplitOptions.None)
. Windows では改行は 2 文字で構成されるためSplit
、文字列配列を受け入れるオーバーロードを使用します(したがって中かっこ)。Split(","c)
. はc
、これが文字列ではなく文字であることを指定します。ToArray
最後に、外側の LINQ 式と内側の LINQ 式に適用することで、この列挙型の列挙型を配列の配列に変換します。