4

string[]で割り当てられたを取得したいStreamReader。お気に入り:

try{
    StreamReader sr = new StreamReader("a.txt");
    do{
        str[i] = sr.ReadLine();
        i++;
    }while(i < 78);
}
catch (Exception ex){
    MessageBox.Show(ex.ToString());
}

できますが、string[] は使用できません。私はこれをしたい:

MessageBox.Show(str[4]);

さらに情報が必要な場合は、お気軽にお問い合わせください。更新します。前もって感謝します...

4

1 に答える 1

14

本当に文字列配列が必要な場合は、少し異なる方法でアプローチします。string[]ファイルに含まれる行数がわからない場合 (ハードコードされた 78 行の値は無視します)、事前に正しいサイズの を作成することはできません。

代わりに、文字列のコレクションから始めることができます:

var list = new List<string>();

ループを次のように変更します。

using (var sr = new StreamReader("a.txt"))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        list.Add(line);
    }
}

次に、リストから文字列配列を要求します。

string[] result = list.ToArray();

アップデート

Cuong's answerに触発されて、これを間違いなく短縮できます。Fileクラスでこの宝石を忘れていました:

string[] result = File.ReadAllLines("a.txt");

Microsoftが a の代わりに を使用し、最後に を介して配列を返す点を除いて、内部で行うことFile.ReadAllLinesは実際には上記で提供したコードと同じです。ArrayListList<string>string[]return (string[]) list.ToArray(typeof(string));

于 2012-09-28T05:03:23.010 に答える