Autor Beitrag
teh_r0ck
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 30.03.11 15:26 
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:

ausblenden 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


Zuletzt bearbeitet von teh_r0ck am Do 31.03.11 15:04, insgesamt 1-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 30.03.11 18:56 
Hallo,

folgendes Testprogramm:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  class Program {
    static void Main(string[] args) {
      //                   0   2   \r  \n  3   4   \r  \n  7
      byte[] byteArray = { 4850131051521355 };
      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:

ausblenden Quelltext
1:
2:
3:
02
34
7

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

Für diesen Beitrag haben gedankt: teh_r0ck
teh_r0ck Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
string[] List = enc.GetString(ReadBuffer)					


Wieder was gelernt :)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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 ;)