Entwickler-Ecke
Basistechnologien - ByteArray in StringArray oÄ?
teh_r0ck - Mi 30.03.11 15:26
Titel: ByteArray in StringArray oÄ?
Hallo allerseits!
Das ist mein erster Post hier. Ich habe vor knapp 3 Wochen angefangen C# zu lernen und code gerade mein erstes Programm.
Nun stehe ich vor folgendem - wahrscheinlich leicht zu lösenden :) - Problem:
Ich habe ein ByteArray, in dem eine Auflistung von E-Mails gespeichert ist (das Ergebnis von "LIST" auf einem POP3-Server). Die Auflistung kann z.B. so aussehen:
Quelltext
1: 2: 3: 4:
| +OK 123 64975986 456 43164897 789 14679538 |
Ich hätte nun gerne ein StringArray, in dem jeder Wert einer Zeile der Auflistung entspricht. (Eigentlich nur die erste Zahl, die entspricht der Message-ID. Aber das traue ich mir mittels string.Split selbst zu :D)
Ich habe versucht, ASCIIEncoding.GetString(ByteArray) zu verwenden, danach enthält der String aber nur die erste Zeile.
Kann mir bitte jemand erklären, wie ich an den kompletten Inhalt komme?
teh_r0ck
Yogu - Mi 30.03.11 18:56
Hallo,
folgendes Testprogramm:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| class Program { static void Main(string[] args) { byte[] byteArray = { 48, 50, 13, 10, 51, 52, 13, 55 }; string[] lines = new ASCIIEncoding().GetString(byteArray).Split( new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (string line in lines) Console.WriteLine(line); Console.ReadKey(); } } |
gibt bei mir korrekt aus:
Ich verwende
'\r' und
'\n' getrennt als Trennzeichen, damit sowohl Windows- als auch Unix- oder Mac-Zeilenumbrüche erkannt werden. Damit unter Windows die Zeilenumbrüche nicht verdoppelt werden, lösche ich leere Einträge.
Ich weiß nicht, was bei dir falsch ist, aber
ASCIIEncoding.GetString funktioniert bei mir wunderbar. Vielleicht zeigst du mal etwas Code?
Grüße,
Yogu
teh_r0ck - Mi 30.03.11 23:35
Hi Yogu,
danke, so funktionierts!
Ich habe nicht dran gedacht dass ich hier .Split anwenden kann, aber enc.GetString liefert ja logischerweise nen String zurück! :D
Mein Code sah so aus:
C#-Quelltext
1:
| string[] List = enc.GetString(ReadBuffer) |
Wieder was gelernt :)
Yogu - Do 31.03.11 16:24
Der Code lässt sich bei mir aber gar nicht kompilieren, C# meldet "Eine implizite Konvertierung vom Typ "string" in "string[]" ist nicht möglich.". Da müsste einem doch eigentlich etwas auffallen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!