2017-06-21 4 views
-1

Mein Code erstellt eine Zeichenfolge aus einem Netzwerkstream mit einem StringBuilder.String.Split Erstellen aller leeren Array-Werte

Dann konvertiere ich den resultierenden StringBuilder (myCompleatMessage) in eine Zeichenfolge mit ToString.

An dieser Stelle ist die Zeichenfolge in Ordnung.

Ich versuche dann .Split() zu verwenden, um auf eine der Zeichenfolge zu trennen ‚~‘

Wenn ich versuche, mit einer Konsole die resultierende Zeichenfolge anzuzeigen oder in eine Datei ich schreiben: „System.String []“ immer wieder wiederholt.

meinen Code hierfür lautet:

byte[] myReadBuffer = new byte[3000]; 
StringBuilder myCompleteMessage = new StringBuilder(); 
int numberOfBytesRead = 0; 
char[] separatingChars = {'~'}; 
// Incoming message may be larger than the buffer size. 
do 
{ 
    numberOfBytesRead = stream.Read(myReadBuffer, 0, myReadBuffer.Length); 

    myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); 

} 
while (stream.DataAvailable); 
string tosep = myCompleteMessage.ToString(); 

string[] words = tosep.Split(separatingChars); 
Console.Write(tosep); 

StreamWriter file = File.AppendText("c:\\Users/edegraaf/Desktop/test.txt"); 
foreach(string i in words) 
{ 
    file.WriteLine(words); 
} 
file.Close(); 

String Beispiel:

24.062C 2017.05.31 19: 36: 20,143767 ~ 24.125C 2017.05.31 19.37: 21.075028 ~ 30.25C 2017-05-31 19: 38: 21.953599 ~ 23.937C 2017-05-31 19: 47: 34.447627 ~ 23.937C 2017-05-31 19: 47: 52.717755 ~ 23.812C 2017-05-31 19: 49: 27.846434 ~ 24.0C 2017-05-31 20: 01: 08.865726 ~ 24.125C 2017-06-01 14: 38: 52.948025 ~ 23.375C 2017-06-01 14: 39: 53.872969 ~ 23.187C 2017.06.01 14: 41: 05,187961 ~ 28.625C 2017.06.01 15: 01: 48,22

Kann mir jemand sagen, warum ich "System.String[]" zu bekommen?

+2

file.WriteLine (Wörter); Sollte Datei.WriteLine (i) sein; – Trey

Antwort

5

Statt die Werte des Arrays zu schreiben, versuchen Sie das Array selbst in die Datei mit schreiben:

file.WriteLine(words); 

Während das, was Sie tun musste, sondern dies ist, um zu schreiben die Werte:

foreach(string i in words) 
{ 
    file.WriteLine(i); 
} 
+0

ok das ist wirklich offensichtlich und ich fühle mich jetzt ziemlich dumm. Vielen Dank für Ihre schnelle Antwort. – drako234

0

Ändern Sie file.write (words) in file.writeline (i). Es funktioniert

Verwandte Themen