4

非常に特別な方法で構造化された銀行からのファイルがあります。口座番号(25)、口座残高開始(60F)、口座残高停止(62F)、および取引(取引の61とこの取引の詳細の86)がある場合。

:20:STARTSUM
:25:/PL2321109943011
:28C:0330/001
:60F:C100PLN38,74
:62F:C103PLN38,74
-


:20:STARTSUM
:25:/PL24160011982002123456001
:28C:0403/001
:60F:C030403PLN36000,00
:61:0304030403CN100,00S723NONREF//CENT30403H000200
:86:723>00PRZELEW OTRZYMANY ELIXIR>20Fakt VAT 1 nr 00911/03
:86:723>3010501445>3125-00001201467436
:86:723>32Firma XXXXXXXXXXă>33Krakow
:61: 0304030403DN1000,00S223NONREF//CENT30403H002342
:86:223>00PRZEL KRAJ MULTICASH>20000004020 20021224 Fa. 0095
:86:223>21007203-FIRMA SP. Z O>308510101010>311234567890123456
:86:223>32FRIMA XXXXXXXXXX UL. GNI>33EZNIENSKA 1
:86:223>3885101010101234567890123456
:86:223>6085101010101234567890123456
:61:0304030403CN100,00S723NONREF//CENT30403H000230
:86:723>00PRZELEW OTRZYMANY ELIXIR>20Fakt VAT 1 nr 00911/03
:86:723>308510101010>311234567890123456
:86:723>32Firma XXXXXXXXXXă>33Krakow
:86:223>3885101010101234567890123456
:86:223>6085101010101234567890123456
:62F:C030403PLN35200,00
-


:20:STARTSUM
:25:/PL2321109944011
:28C:0330/001
:60F:C120330PLN43,45
:62F:C120330PLN43,45
-


:20:STARTSUM
:25:/PL1109945011
:28C:0330/001
:60F:C1230PLN3,50
:62F:C1230PLN3,50
-

各ブロック間には常に 2 行の改行があります。それらのブロックを私が作成したオブジェクトに入れたいと思います。

string[] test = File.ReadAllLines(file);
foreach (var s in test) {

}

どうすれば適切な方法でアプローチできますか?通常、foreach行単位でブロックを空の 2 行で分割してから、複数の if/else ステートメントを実行してさらに先に進みます。しかし、これには単純でより良いアプローチがあるのではないでしょうか?

4

2 に答える 2

6
string[] blocks = (file.ReadAllText(file)).split(new string[] {"\n\n\n"}, StringSplitOptions.None)

あなたのためにそれをブロックに分割する必要があります。

于 2012-04-03T20:22:53.513 に答える
0

StreamReaderの使用を検討し、ロジックを使用して探しているものを見つけてください。

StreamReader _sr = new StreamReader("YourFile");
_sr.ReadLine();
于 2012-04-03T20:26:31.620 に答える