Laden...

Split() bei zweidimensionales Arry verwenden

Erstellt von ---=xXx=--- vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.858 Views
Thema geschlossen
-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
Split() bei zweidimensionales Arry verwenden

Hallo versuche grerade eine Textdatei in spalten und zeilen zu unterteilen.
eine Spalte wird nach jedem ";" erstellt und eine zeile nach jedem Zeilenumbruch. Aber irgendwie funktioniert das stückchenweise Speichern der einzelnen Textabschnitte mit dem Split nicht. den ich brauche das in einem 2 Dimensionalem Array. Bitte um hilfe

z.b. Textdatei:

333;23421312;6575457;234214;blubb;
5464;wertwert;57554;676585;asdf;
quack;sdafasdf;uztutru;rtutritrizti;

mein Quelltext:

static void Main(string[] args)
        {   int spalten=0;
            int zeilen=0;
           string[,] werte = new string[20,20];
           char[] splitter = { ';' };
            
            
            
            string txt = null;
            int i = 0;
            //args[0];  //dateiname
            //args[1];  //Datenbankname

            System.IO.StreamReader SR;
            SR = new System.IO.StreamReader(args[0]);


           // werte = txt.Split(splitter);
            for(spalten=0;spalten<txt.Length;spalten++)
            {

                    if ((txt = SR.ReadLine()) != null)
                    {
                        zeilen++;
                        Console.WriteLine(txt);
                    }
                spalten++;

                

                werte[zeilen] = txt.Split(splitter);
              
            }
49.485 Beiträge seit 2005
vor 15 Jahren

Hallo ---=xXx=---,

ein zweidimensionales Array ist hier ungünstig. Verwende besser jagged Arrays oder noch besser eine extra Klasse.

herbivore

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
Klappt nichts

wie soll das ganze im quelltext aussehen? hab schon sau viel rumprobiert aber gar nichts klappt bitte dringend um hilfe....

danke im voraus florian

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo ---=xXx=---,

den Quelltext musst du schon selber schreiben. Siehe [Hinweis] Wie poste ich richtig? Punkt 4. Wie helfen aber gerne dabei. Was hast du genau probiert. Welche Probleme an welcher Stelle. Siehe [Hinweis] Wie poste ich richtig? Punkt 5.

Vielleicht liegt es auch an fehlenden Grundlagen, siehe [Hinweis] Wie poste ich richtig? Puntk 1.1.1. Dann solltest du erst mal einen Schritt zurücktreten und dich allgemein mit (jagged) Array beschäftigen.

herbivore

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
Alles klar

Das ist der Programm schnipsel wo ich Probleme habe:

           // werte = txt.Split(splitter);
            for(spalten=0;spalten<txt.Length;spalten++)
            {

                    if ((txt = SR.ReadLine()) != null)
                    {
                        zeilen++;
                        Console.WriteLine(txt);
                    }
                spalten++;

                
               
                werte[zeilen,spalte] = txt.Split(splitter);  /*fehlermeldung: Eine implizite Konvertierung vom Typ "string[]" in "string[*,*]" ist nicht  möglich.*/	        
            }

wie schaffe ich das Problem zu lösen ohne alles um zu Programmieren?

gruß Florian

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo ---=xXx=---,

wie ich schon sagte: verwende (an dieser Stelle) jagged Arrays.

BTW: Schau auch in [Hinweis] Wie poste ich richtig? Punkt 6. Dann muss ich die [****CSHARP]-Tags nicht immer nachträglich einfügen.

herbivore

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
Immer noch Problem

das funktiniert irgendwie trotzdem nicht.

sitz schon 2std. an dem Problem.

Aber troztdem Danke für die Hilfestellung

Gelöschter Account
vor 15 Jahren

irgendwie ist eine vage aussage.

mit jagged arrays geht es definitv.

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
hm

irgendwie funktionierts nicht...

kann mir keiner sagen wie ich des dortn anwenden soll und wies ungefähr ausschauen soll?

sitz da schon nun seid 3std. dran ... naja aber trotzdem danke für die hilfe keine ahnung wie ich weitermachen soll

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo ---=xXx=---,

wir erwarten halt Eigeninitiative. Dazu gehört auch, unbekannte Begriffe nachzuschlagen. Hast du denn jagged array schon mal nachgeschlagen. Wenn du das tust, findest du auch Beispiele wie man es benutzt. Jagged Arrays sind natürlich ein Ersatz für das zweidimensionale Array. Das musst dann natürlich wegschmeißen.

herbivore

915 Beiträge seit 2006
vor 15 Jahren

Hrm, würde das ganze etwas vereinfachen.

Erstmal muss man sich folgende Fragen stellen:

1.) Zeilen exestieren einmalig
2.) In jeder zeile kann einmalig nur eine spalte exestieren
3.) eine Spalte kann nur einen Wert besitzen
4.) Ein Wert kann x Fach vorkommen.
5.) Ich möchte schnell auf eine Zeile und die Spalte zugreifne können um den Wert auszulesen.

Lösung:



			Dictionary<int, Dictionary<int, string>> myFinder = new Dictionary<int, Dictionary<int, string>>();

			string write = "333;23421312;6575457;234214;blubb;\n5464;wertwert;57554;" + "676585;asdf;\nquack;sdafasdf;uztutru;rtutritrizti;";
			string[] zeilen = write.Split('\n');

			for ( int i = 0; i < zeilen.Length; i++)
			{
				string[] spalten = zeilen[i].Split(';');

				Dictionary<int, string> dic = new Dictionary<int,string>();

				for (int j = 0; j < spalten.Length; j++)
				{
					dic.Add(j, spalten[j]);
				}

				myFinder.Add(i, dic);
			}

			Console.WriteLine("Der Wert in der ersten Zeile und zweiten Spalte beträgt {0}", myFinder[0][1]);

Ist das selbe wie jagged Arrays, finde es nur schöner.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Andreas.May,

finde es nur schöner.

sorry, kann ich nicht nachvollziehen. Ich bin ja nun wahrlich ein freund von Dictionary, aber hier haben die nichts zu suchen.

herbivore

915 Beiträge seit 2006
vor 15 Jahren

Warum ich es schöner finde ist leicht erklärt:

Es kann ja nur eine Zeile geben innerhalb seines Textdokuments, daher folgendes Schema was ich als Bsp. reingemacht habe:

Zeile 1 Spalte1 <Wert>; Spalte2 <Wert>; Spalte3 <Wert>;
Zeile 2 Spalte1 <Wert>; Spalte2 <Wert>;
Zeile 3 Spalte1 <Wert>;
Zeile 4 Spalte1 <Wert>; Spalte2 <Wert>; Spalte3 <Wert>; Spalte4 <Wert>;

Wenn er vorhat wie in Excel Cells zu erstellen die folgendes Schema aufweisen:

Zeile 1 Cell(0;0)<Wert>; Cell(0;1)<Wert>; Cell(0;2)<Wert>;
Zeile 2 Cell(1;0)<Wert>; Cell(1;1)<Wert>; Cell(1;2)<Wert>;
Zeile 3 Cell(2;0)<Wert>; Cell(2;1)<Wert>;
Zeile 4 Cell(3;0)<Wert>; Cell(3;1)<Wert>; Cell(3;2)<Wert>;

Hat er damit auch keine Probleme, dafür kann man ebenso ein Dictonary verwenden mit nen Jagged Array als Key.

Ich finde wenn man sich so seine schnellsuche vorstellt wird es einfacher zu indizieren als wenn man später über zich schleifen nach etwas suchen muss. Allerdings habe ich nur 3-4 minuten drüber nachgedacht und länger gebraucht für's tippen - lasse mich daher gerne eines besseren belehren 🙂

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
hallo danke für die Hilfe

Lieber Andreas.May wie würde denn das ganze ohne Dictionary aussehen?

den ich möchte das Programm in der cmd zeile der Konsole anwenden

bedanke mich für jede Antwort

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Andreas.May,

sorry, kann ich immer noch nicht nachvollziehen. Alles was du als Vorteil des Dictionaries schreibst geht mit jagged arrays genauso, inkl. des (noch schnelleren) Zugriffs über den Index. Nur geht es mit jagged Arrays eben schneller und sogar noch ein bisschen einfacher.

Hallo ---=xXx=---,

ich habe schon oben geschrieben, dass wir hier mehr Eigeninitiative erwaten. Lass es dir nicht vorbeten, sondern schlag es einfach selber nach. Du hast alle Stichworte die du brauchst. Wir sind ein Hilfeforum, keine Lösungsmaschine.

herbivore

-
---=xXx=--- Themenstarter:in
7 Beiträge seit 2008
vor 15 Jahren
alles klar

hab schon eben rumprobiert...

aber wie schaut das ohne aus halt ohne dictionary ?

halt das ersetzt mit jagged arrays?

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo ---=xXx=---,

da du nur immer wieder die gleich, schon beantwortete Frage wiederholst ==> geschlossen.

herbivore

Thema geschlossen