Wczytywanie danych do Listy

Wczytywanie danych do Listy
EB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
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.

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

Stworzyłem sobię listę

Kopiuj
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.

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

            }
AdamWox
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Jastrzębie-Zdrój
  • Postów: 2180
1

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

Kopiuj
foreach(string line in tabelaDzialki)
{
	if(line.Contains("Dz"))
	{
		Console.WriteLine(line);
	}
}
EB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
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

G1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 507
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 :)

EB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
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

Kopiuj
 foreach (string line in tabelaDzialki)
            {
                if (line.Contains("Dz"))
                {
                    listaWierszyDzialek.Add(Array.IndexOf(tabelaDzialki, line));
                    richTextBox1.AppendText(listaWierszyDzialek[listaWierszyDzialek.Count - 1].ToString() + "\r");
                }
             }
AdamWox
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Jastrzębie-Zdrój
  • Postów: 2180
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ć?

Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.