Hi ihr.
Hab mal eine Frage wie man das mit C# hinbekommen könnte:Ich habe eine Textdatei die ungefähr so aussieht:
Test 000000000x091000000000000cv0001
Test: 1
Problem: Check23
doof
Am: 23.04.2007Echt doof dass das nicht klappt irgendwie nun.. ---- das ist ja nur ein Test
Check
Test 0901910290111xx9819829
Check
Test: 21
&&24
Problem: Check12
Am: 23.07.2004
Sub: was ist losIrgendwie immernoch doof oder?
Jaja, so ist das wenn mans nich kannTest Nummer24 5555,,x991 Check+ggg Test: 001x
Problem: möp
Sub: was ist los
Am: 23.07.2004Irgendwie immernoch doof oder? Jaja, so ist das wenn mans nich kann
G1
Wie ihr sicher merkt fängt jeder 'neue Bereich' in der Textdatei mit "Test " an.
Ich möchte nun das immer der ganze Text zwischen den Test's (und dem letzten Test und dem Ende der Datei) in Felder oder Textdateien abgelegt wird.
Also soll am Ende ungefähr das rauskommen:
Feld1:
Test: 1
Problem: Check23
doof
Am: 23.04.2007Echt doof dass das nicht klappt irgendwie nun.. ---- das ist ja nur ein Test
Check
Feld2:
Check
Test: 21
&&24
Problem: Check12
Am: 23.07.2004
Sub: was ist losIrgendwie immernoch doof oder?
Jaja, so ist das wenn mans nich kann
Feld3:
Check+ggg Test: 001x
Problem: möp
Sub: was ist los
Am: 23.07.2004Irgendwie immernoch doof oder? Jaja, so ist das wenn mans nich kann
G1
Natürlich können noch viele andere solcher Bereiche in die Textdatei hinzukommen, das ganze muss also variabel sein.
Ich hab keine Ahnung wie ich das hinbekommen könnte.
Hoffentlich versteht ihr meine Erklärungsversuche.
Grüße & Danke schonmal
Hallo VBMichi,
String.Split oder Regex.Split
herbivore
Hi herbivore.
Danke für die schnelle Antwort.
Split war mir vorher auch geläufig, ich hab nur keine Ahnung wie ich das in meinem speziellen Fall anwenden soll.
Kannst du ein kleines Beispiel machen?
X(
Grüße
Hallo VBMichi,
du weißt nicht, wie du es anwenden sollst??? Hast du schon mal in die :rtfm: Doku geguckt?
herbivore
Da "Test" ein Wort ist, das auch einfach so im Text stehen kann, würde ich den Text von Hand splitten. Es wäre trotzdem empfehlenswert, ein anderes Trennzeichen zu verwenden.
Klar kenne ich die Split Funktion gut.
Das Problem liegt auch eher darin den Text zwischen den Test's und dem letzten Test und dem Dateiende in Felder zu legen (und das ganze variabel zu machen).
@ Borg:
Wenn Test mehrmals vorkommt macht das nichts, da ist vorgesorgt.
Grüße
Wenn Test mehrmals vorkommt macht das nichts, da ist vorgesorgt.
Diese Aussage verstehe ich nicht. Wenn du ein eindeutiges Trennzeichen hast, reicht ein simples:
string[] blocks = File.ReadAllText( dateiname ).Split( trennzeichen );
string[][] inhalt = new string[][blocks.Length];
for( int i = 0; i < blocks.Length; i++ )
{
inhalt[i] = blocks[i].Split( '\n' );
}
um das ganze zu splitten.
Meinst du mit deiner Aussage, das Test kein zulässiges Wort in der Beschreibung ist?
Hallo Borg,
wenn das ganze das macht, was ich denke, dann war das genau das was ich suche.
Leider bekomme ich Fehler von #develop zurückgeliefert:
Und zwar hier:
string[] blocks = File.ReadAllText("Testdatei.txt").Split("Test ");
string[][] inhalt = new string[][blocks.Length];
Fehler: Array creation must have array size or array initializer
Fehler: Invalid rank specifier: expected ',' or ']'
Er markiert 'blocks' von 'blocks.Length und den Strichpunkt in Zeile 2.
Grüße
Oder so :
string text = File.ReadAllText("Testdatei.txt");
text = text.Replace("\r\nTest","\r\n|Test");
string[] felder = text.Split('|');
Als Trennzeichen (hier |) musst Du natürlich ein Zeichen wählen dass nicht im Text vorkommt.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hallo.
Wollte nur kurz bescheid geben das ich es geschafft habe.
Danke nochmal für die Hilfe.
Grüße
Original von BerndFfm
Oder so :string text = File.ReadAllText("Testdatei.txt"); text = text.Replace("\r\nTest","\r\n|Test"); string[] felder = text.Split('|');
Als Trennzeichen (hier |) musst Du natürlich ein Zeichen wählen dass nicht im Text vorkommt.
Nur aus Neugier: Warum soll er hier erst aus einer Trennmarkierung eine andere machen?
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Hallo DarKlajid,
wenn man "\r\nTest" als Trennmarkierung nehmen würde, wäre dieser Text ja nicht mehr im Ergebnis enthalten.
So wird ein | eingefügt, der durch das Split wieder entfernt wird.
Eleganter ginge es natürlich mit Regex.Replace, weil man damit auch 0 Zeichen breite Trenner verwenden kann.
herbivore