DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ArrayListの使い方

環境/言語:[環境(Windows2000,XP)、使用言語(C#) ]
分類:[.NET]

始めまして。
このたびC#のプログラミングを始めて行うことになり、
お見苦しい質問かもしれませんがお力をお貸しください。よろしくお願いいたします。

遣りたいことは、カンマ区切りのCSVファイルのデータ読み込みです。
ArrayListに読み込んだのですが、ArrayListからのデータ取得が出来ません。
以下のようなソースを書いたのですが・・・。
//ファイル読み込み
System.IO.StreamReader sr = new System.IO.StreamReader
( @"c:\test.csv",
System.Text.Encoding.GetEncoding("shift-jis"));
//ArrayListに読み込み
ArrayList al = new ArrayList();
while (sr.Peek() > -1)
{
al.Add(sr.ReadLine().Split(','));
}
sr.Close();

-------------------------------
csvファイルの中身が
aaa,1111
bbb,2222
ccc,3333
だとすると、
ArrayList配列alには
_items
[0]
[0] "aaa"
[1] "1111"
[1]
[0] "bbb"
[1] "2222"



と格納されているようなのですが、
この取得の仕方がわからないのです。

for文で回して各行の項目をそれぞれ取得したいのですが、
試しに
string str = al[0].ToString();
としたところ、"System.String[]"と取得されてしまいました。


System.Collections.IEnumerator myEnumerator = (IEnumerator)al.GetEnumerator();
としてみたのですが、
string str = myEnumerator.Current.ToString();
でも同じ結果です。
もしかして
myEnumerator.Current[0];で取れるかと思ったのですが
やはりエラーでした。

全然分かっておらず申し訳ないのですが、
ご教授くださいませ。
よろしくお願いいたします。
■No10598に返信(kyoroさんの記事)
>     al.Add(sr.ReadLine().Split(','));
ここで Splitメソッドでの戻り値は string[] になるので
string[] でArrayList に追加しています。

故に取得するときも string[] で取得しなければなりません。

例)
using System;
using System.IO;
using System.Text;
using System.Collections;

namespace CSVRead
{
    class MainClass
    {
        public static void Main( string[] args )
        {
            StreamReader srCSVFile = new StreamReader( "C:\\test.csv", 
                                                       Encoding.GetEncoding( "Shift_JIS" ) );
            ArrayList alData = new ArrayList();
            while ( srCSVFile.Peek() > -1 )
            {
                alData.Add( srCSVFile.ReadLine().Split( ',' ) );
            }
            srCSVFile.Close();
            
            foreach ( string[] astrData in alData )
            {
                foreach ( string strData in astrData )
                {
                    Console.Write( "{0},", strData );
                }
                Console.Write( "\n" );
            }
        }
    }
}
参考Webページ
http://ukamen.hp.infoseek.co.jp/Programming/Collection/
(宇宙仮面の C# プログラミング)
こんにちは中です。

splitで単純に分解できるほどCSVはやわではないです。

http://naka.wankuma.com/site/library/dotnet1.1/Wankuma.IO.CSV1d.htm
■No10599に返信(Blueさんの記事)
>Blueさん
早速のご返信、大変丁寧なご回答有難うございます。
とても解りやすく、有り難いです。
foreach文や参考URLなど、大変有難うございます!これから参考にさせていただきます。
解決いたしました。
  • 題名: Re[4]: ArrayListの使い方
  • 著者: kyoro
  • 日時: 2005/04/22 10:55:08
  • ID: 10603
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
上記のアイコン変更し忘れました・・。すみません。


■10601 に返信(中博俊さんの記事)
>中さん

情報ありがとうございます!まったく気づきませんでした。

感謝いたします。早速これから参考にさせていただきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板