2017-05-10 6 views
2

私は次のようにあるテキストファイルを持っている:読む二行

私は効果的にテキストファイルから 二行のデータのを読み、第一変数に割り当てるにはどうすればよい
Ali 

M*59*AB 

John 

M*68*B 

Shirley 

F*35*B 

Peter 

M*88*A 

Fiona 

F*55*O 

Mary 

F*46*B 

2行目は性別はWEIGHT BLOODTYPE?

+1

ようこそ。 [mcve]。がんばろう! – MickyD

+0

@ShahroozAnsariあなたは他人の仕事を盗作したと言ったのですか? – MickyD

答えて

-1

これを達成する方法はたくさんあります。それらのすべてには、テキストファイルの行を繰り返し処理する必要があります。

はここ7

string path = "file path here"; 

Dictionary<string, (string Gender, string Weight, string BloodType)> records = 
    new Dictionary<string, (string Gender, string Weight, string BloodType)>(); 

Stack<string> stack = 
    new Stack<string>(); 

foreach (string line in File.ReadLines(path)) 
{ 
    if (stack.Count != 1) 
    { 
     stack.Push(line); 
     continue; 
    } 

    string[] fields = 
     line.Split('*'); 

    records.Add(
     stack.Pop(), 
     (Gender: fields[0], 
     Weight: fields[1], 
     BloodType: fields[2])); 
} 

このスニペットは一度に1つのファイルからの行ストリームC#で利用可能な新しいValueTupleタイプに果たしているそのようなソリューションです。まず、name行をスタックにプッシュします。スタック上に名前があると、次のループはそれをポップし、現在の行を解析してレコード情報を取得し、nameをキーとしてrecords辞書にすべて追加します。

このソリューションでは始めることができますが、いくつかの洞察を得てデータ環境の堅牢性を向上させることができる明確な領域がいくつかあります。

たとえば、この解決策では、名前またはレコード情報が不足している場合や、レコード情報に3つのフィールドがすべて含まれていない場合も処理されません。

実装するコードでこのようなケースを処理する方法については慎重に考える必要があります。