データセット:「file.dat」内の数百行のデータ。それぞれの長さは80〜500ASCII文字です。
各文字列の特定の場所(区切られていない固定幅)に、4つの関連情報があります。
1)-NUMBERS-常に各文字列の最初の3文字にあり、文字列が私に関連しているかどうかを示す番号です。210、310、または410のいずれかが含まれている場合は、この行を処理します。それ以外の場合は、無視します。
2)-LETTERS-この情報の場所は、最初の3桁が210、310、または410のいずれであるかによって異なります。210の場合、場所406-409に含まれる値(常に文字)をアルゴリズムで確認する必要があります。最初の3桁が310の場合、322-325の値が必要です。410の場合、必要なのは478-481です。
3&4)-NUMBERS-最後の2つの情報は数値であり、1つは常に0で、もう1つは> 0です。どちらが非ゼロになるかわからないので、それらを足し合わせたいと思います。 。これらの番号は次の場所にあります。
最初の番号の場所2番目の番号の場所 210:.........129-140...................................。 ..142-153 .. 310:..........113-124..................................。 ... 126-137 410:..........113-124..................................。 ... 126-137
これで私がする必要があるのは、2)の文字の組み合わせごとに小計を提供することです。2)の値の範囲は、文字の約4〜5の異なる配置(ABCD、AAAA、BBBB、CCCC、DDDD)であるため、最終的な出力は次のようになります。
210AAAA「総数」 210BBBB「総数」 。 。 。 410DDDD「総数」 410ABCD「総数」
数字と文字のすべての組み合わせ(最大15)など。
これが明確であることを願っています、よろしくお願いします。
編集:現在のコード:
私は現在、一連のifとたくさんのvarを使ってそれを実行しようとしています。このコードが貼り付けられることを願っています:
class Program
{
static void Main()
{
// Read in a file line-by-line, and store in a List.
List<string> list = new List<string>();
using (StreamReader reader = new StreamReader("file.dat"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
var beginning = line.Substring(0, 3);
// building this up atm
// var letters210 = line.Substring(129,11);
if (beginning != "210" && beginning != "310" && beginning != "410")
continue;
list.Add(line); // Add to list.
Console.WriteLine(line); // Write to console.
}
}
}
}