Wykonywanie sumy częściowej na filtrowanych danych z czytnika strumieniowego
edytuj jako pytanie bez odpowiedzi
Mam filtrowane wyjście oparte na 1 kryterium (pierwsze 3 cyfry to 110,210 lub 310, aby dać 3 odrębne grupy) do konsoli od streamreadera. Pytanie edytowane, ponieważ pierwsza odpowiedź była dosłownym rozwiązaniem konkretnego przykładu, który podałem, rzeczywiste ciągi, których używam, mają długość 450 znaków ASCII. Dostosowałem przykładowe łańcuchy, aby temu zaradzić, wszystko, co działa na przykładowych danych, będzie działać na tym, co mam.
więc to, czego naprawdę potrzebuję, to coś, co może, w zależności od pierwszych 3 liczb, pobrać 3 litery ze wstępnie określonej znanej lokalizacji (dla 210 cyfr będzie to szczelina znakowa 14-16, a następnie użycie jej jako podkategorii, zsumowanie wszystkich wpisów) w gnieździe znaków 33-37 i wyślij je).
przykładowe łańcuchy:
210!!!!123244AAA75AWEHUIHJUAS!!!11111
210???1223455ABC76554HJHSDFQ????22222
210--32455623ABCFFCDGHDSFAS-----33333
310 1232451 2ABC34 GAERsASDFASDG1234523 44444
310 1234a354GDSAASDR 3 AAA GF234523653hfdssdgSDASDF 11111
310 12378HJK1234 ABC HJHJK123462 ASDHDFS FA REW 22222
4101111ASDJF 1ABCASF D1234 ASGF66666
4102222QW12362ER2 ABC 23459876HJKXC 11111
41033333T123 1RWE AAA ASDFHJKRTR WQ 22222
Na koniec moje wyniki będą następujące:
210 AAA 11111
210 ABC 55555
310 ABC 66666
310 AAA 11111
410 ABC 77777
410 AAA 22222
ABC, AAA itp. Są zawsze w tym samym miejscu dla tego samego numeru startowego, ale będą różne dla każdego numeru startowego.
Podobnie, suma sumowanych sum znajduje się tylko w tym samym miejscu na każdy numer startowy.
Próbowałem dodać trochę string.split do istniejącego kodu (poniżej), ale nie miałem szczęścia.
// 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);
if (beginning != "210" && beginning != "310" && beginning != "410")
continue;
list.Add(line); // Add to list.
Console.WriteLine(line); // Write to console.
}
}