Wczytywanie danych do Listy

0

Siema ziomki!
Zaczynam troszkę pogramować, napisałem już 2 aplikacje które ułatwiają mi pracę teraz pracuje nad kolejną.
Próbuję ogarnąć listy w C#, mógłby ktoś mnie nakierować :)?

Problem jest następujący mam plik txt z podziałem na działki i punkty:
Dz: 26/2
D.040301_2.0001.1486 5885366.55 6492696.61 1
D.040301_2.0001.1456 5885368.74 6492700.26 1
D.040301_2.0001.21964 5885382.04 6492726.67 1
Dz: 2041
D.040301_2.0001.1684 5885373.09 6492746.54 1
D.040301_2.0001.1683 5885374.60 6492749.72 1
D.040301_2.0001.2174 5885283.69 6492799.23 1
D.040301_2.0001.22075 5885273.71 6492842.06 1

Zaczytałem je do tabeli linijkami.

            string buffer = reader.ReadToEnd();
            string[] tabelaDzialki = buffer.Trim().Split('\n');

Stworzyłem sobię listę

public Punkt(string NrP, double X, double Y, int Cecha)
        {
            _NrP = NrP;
            _X = X;
            _Y = Y;
            _Cecha= Cecha;
        }

I teraz chciałbym stworzyć pętle która zaczytywałaby mi do tej listy linijkami do znaku "dz:" w tym momencie powinna tworzyć się nowa lista. Szukam od wczoraj na różnych forach polskich i angielskich ale nie wiem jak to wpisać. Chciałbym żeby zwracało mi wiersz w którym znajduje się dz i pętla kończyła się na tej linijce.

  for (int i = 0; i < tabelaDzialki.*NrWierszaZawierający"dz:"*; i++)
            {

            }
1

Przyznaj się... Nie szukałeś nigdzie?

foreach(string line in tabelaDzialki)
{
	if(line.Contains("Dz"))
	{
		Console.WriteLine(line);
	}
}
1

@AdamWox: Naprawdę szukałem i to od wczoraj aale jestem amatorem- samoukiem więc niewiele wiem o listach :D
W każdym razie dzięki!

screenshot-20210123132954.png

1

Kiedy szukasz rozwiązania problemu w Google rozbijaj go na czynniki pierwsze. Z tego co widzę po historii szukasz jak zrobić listę z danych zawartych w string. Twoim faktycznym problemem powstrzymującym Cię przed pójściem dalej było "jak znaleźć wiersz w string zawierający podany ciąg". W internecie jest wszystko tylko trzeba odpowiednio sformuować pytanie :)

0

@gswidwa1: Na pewno jest łatwiej jak się trochę bardziej zna, aale małe kroczki, małe kroczki! :D Dzięki w każdym razie.

I przy okazji to kod od @AdamWox zwracał wartość tego wiersza a nie który to wiersz ale troszkę to zmodyfikowałem.
Jakby ktoś na moim poziomie szukał to miej więcej tak to wygląda :D

 foreach (string line in tabelaDzialki)
            {
                if (line.Contains("Dz"))
                {
                    listaWierszyDzialek.Add(Array.IndexOf(tabelaDzialki, line));
                    richTextBox1.AppendText(listaWierszyDzialek[listaWierszyDzialek.Count - 1].ToString() + "\r");
                }
             }
0

Chciałbym żeby zwracało mi wiersz w którym znajduje się dz i pętla kończyła się na tej linijce.

To jakby nie patrzeć nie jest jednoznaczne czy chcesz wartość wiersza, czy jego indeks. I co to znaczy, że pętla ma się tam kończyć?

for(int i = 0; i < tabelaDzialki.Length; i++)
{
    if(tabelaDzialki[i].Contains("Dz"))
    {
        // i = indeks działki
        listaWierszyDzialek.Add(i);
        richTextBox1.AppendText(tabelaDzialki[i] + "\r");
    }
}

PS.
Dziwne to masz ale nie drążę, bo to nie jest tematem posta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1