C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ArrayListのサイズ取得


(過去ログ 122 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■72919 / inTopicNo.1)  ArrayListのサイズ取得
  
□投稿者/ それや (1回)-(2014/08/01(Fri) 14:19:54)

分類:[VB.NET/VB2005 以降] 

ArrayListのサイズ取得方法がわかりません。
CSVファイルを読み込んでArrayListに入れる物の一部ですが、 csvRecordsに読み込んだあと、
csvRecords(i)(j)のiとjの最大値を取得したいのです。
A??? 部と B??? 部がわかりません。

B???は、csvRecords(0).length で取得出来そうなのですが、なぜ0?と
思っています。よろしくおねがいします。


Dim csvRecords As New System.Collections.ArrayList()

While Not tfp.EndOfData
Dim fields As String() = tfp.ReadFields()
csvRecords.Add(fields)
End While


For i = 0 To A??? - 1
For j = 0 To B??? - 1
Debug.WriteLine csvRecords(i)(j)
Next j
Next i



csvRecords(0).length
引用返信 編集キー/
■72922 / inTopicNo.2)  Re[1]: ArrayListのサイズ取得
□投稿者/ ぽぴ王子 (4回)-(2014/08/01(Fri) 14:42:35)
ぽぴ王子 さんの Web サイト
No72919 (それや さん) に返信
まず、プログラムコードを記入するときは投稿モードの「図表モード」を選択していただくとわかりやすいです。

それはそれとして。

> For i = 0 To A??? - 1
>     For j = 0 To B??? - 1
>             Debug.WriteLine csvRecords(i)(j)
>     Next j
> Next i

A??? は csvRecords の全体数ですよね。なので csvRecords.Count プロパティで求めることができます。
また、 B??? は csvRecords の一要素に含まれる文字列型の配列、の全体数です。なので csvRecods(0).Length
ではなく csvRecords(i).Length になるかと思います。
ArrayList 型の csvRecords の i 番目の要素の全体数ですね。

また For を使うよりは For Each を使った方が楽かもしれません。

引用返信 編集キー/
■72923 / inTopicNo.3)  Re[1]: ArrayListのサイズ取得
□投稿者/ 魔界の仮面弁士 (65回)-(2014/08/01(Fri) 14:43:04)
No72919 (それや さん) に返信
> ArrayListのサイズ取得方法がわかりません。

tfp というのは何でしょうか。FileIO.TextFieldParser かな?


> Dim csvRecords As New System.Collections.ArrayList()
> Dim fields As String() = tfp.ReadFields()
> csvRecords.Add(fields)

.NET 2.0 以降で、ArrayList が必要となることは稀です。

今回は「csvRecords As New System.Collections.ArrayList()」ではなく、
「csvRecords As New List(Of String())」で処理した方が良いと思いますよ。


> csvRecords(i)(j)のiとjの最大値を取得したいのです。
i の最大値は「csvRecords.Count - 1」です。
j の最大値は「UBound(csvRecords(i))」です。

このほか、
 「csvRecords(i).GetUpperBound(0) - 1」
 「csvRecords(i).Length - 1」
 「csvRecords(i).Count() - 1」
などでも、j の最大値を求められます。


> B???は、csvRecords(0).length で取得出来そうなのですが、
> なぜ0?と思っています。よろしくおねがいします。
この場合の 0 は、csv の先頭行の意味ですね。

行によって列数の異なる CSV ファイルを扱う場合には、
csvRecords(0).Length と csvRecords(1).Length が
異なる場合があるかもしれません。
引用返信 編集キー/
■72928 / inTopicNo.4)  Re[2]: ArrayListのサイズ取得
□投稿者/ それや (2回)-(2014/08/01(Fri) 16:28:49)
ぽぴ王子様、魔界の仮面弁士様ご回答大変有り難う御座いました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -