Benutzer mit den meisten Antworten
C# - Frage zu einem Array Problem

Frage
-
Sehr geehrte Damen und Herren,
ich habe eine Frage zu einem Array Problem:
private void button1_Click(object sender, EventArgs e) { try { using (StreamReader sr = new StreamReader(path)) { String Datei = sr.ReadToEnd(); string[] lines = Datei.Split('\n'); foreach (string line in lines) { if ((line.IndexOf("SA6") != -1)) { string[] test = line.Split(';'); foreach(string line1 in test) { MessageBox.Show(line); } } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Die Datei sieht ungefähr so aus:
SA1;Test_1;Test_2;Test_3;SA1_END SA2;Asdf_1;Asdf_2;Asdf_3;SA2_END SA3;Te_1;Te_2;Te_3;SA3_END
Mein Code funktioniert auch, jedoch stelle ich mir die Frage, warum er mir bei MessageBox.Show(line); die einzelnen Felder anzeigt, jedoch wenn ich ein bestimmtes Feld ansprechen will mit MessageBox.Show(Convert.ToString(line1[0])); Mir nur den ersten Char anzeigt und nicht den String.
Kann mir das jemand erklären, stehe voll auf dem Schlauch und im Internet habe ich nichts gefunden was mir weitergeholfen hat.
Würde gerne nur bestimmte einzelnde Felder ansprechen.
Über jede Hilfe und Denkanstöße bin ich sehr dankbar.
Gruß
Dash_
Antworten
-
Hi,
dein "line1" ist kein Array, somit kannst du auch nicht auf Felder zugreifen. In deinem Code ist "test" das Array, in dem du die einzelnen Felder zugreifen kannst.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. Februar 2018 12:45
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 16. Februar 2018 08:45
-
Hi,
Dein Programm liest zuerst alle Zeichen ein erzeugt dann ein Array mit den Zeilen. Da könnte man auch gleich Read<line nutzen.Eine Zeile "line" wird dann aufgeteilt mit dem Tenner ";" und "line1" ist dann das Array der einzelnen Schnipsel der Zeile. Jedes Schnipsel (Teil der Zeile) ist intern ein Array von Zeichen. Deshalb gibt "line1[0]" das erste Zeichen eines Schnipsels aus. Vermutlich suchst Du "MessageBox.Show(line1);", also die gesamte Ausgabe eines Schnipsels.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Bearbeitet Peter Fleischer Sonntag, 4. Februar 2018 18:31
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. Februar 2018 12:45
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 16. Februar 2018 08:46
Alle Antworten
-
Hi,
Dein Programm liest zuerst alle Zeichen ein erzeugt dann ein Array mit den Zeilen. Da könnte man auch gleich Read<line nutzen.Eine Zeile "line" wird dann aufgeteilt mit dem Tenner ";" und "line1" ist dann das Array der einzelnen Schnipsel der Zeile. Jedes Schnipsel (Teil der Zeile) ist intern ein Array von Zeichen. Deshalb gibt "line1[0]" das erste Zeichen eines Schnipsels aus. Vermutlich suchst Du "MessageBox.Show(line1);", also die gesamte Ausgabe eines Schnipsels.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Bearbeitet Peter Fleischer Sonntag, 4. Februar 2018 18:31
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. Februar 2018 12:45
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 16. Februar 2018 08:46
-
Hallo,
danke erstmal für deine Antwort.
Das mit dem Read<line werde ich mir anschauen.
Das mit MessageBox.Show(line1) weiß ich, jedoch wollte ich wissen wie ich jetzt zum Beispiel immer bloß das Dritte ansprechen kann.
Das wäre dann in meinem Fall immer nur: Test_3;Asdf_3;Te_3 etc....
Deswegen dachte ich auch das es mit MessageBox.Show(line[2]) funktioniert.
-
Hi,
dein "line1" ist kein Array, somit kannst du auch nicht auf Felder zugreifen. In deinem Code ist "test" das Array, in dem du die einzelnen Felder zugreifen kannst.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. Februar 2018 12:45
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 16. Februar 2018 08:45