Hallo
Ich möchte die letzten Zeichen aus dem Buffer entfernen.
Ich erhalte einen Buffer mit 125 Zeichen.
Doch die letzten sind nur leerzeichen diese möchte ich entfernen, dies wollte ich mit der Trim() methode machen doch es funktioniert leider nicht.
hier der Code:
try
{
Verschluesselung ver = new Verschluesselung();
client = servSocket.Accept();
Console.Write("Handling client at " + client.RemoteEndPoint + " - ");
int totalbytesEchoed = 0;
while ((bytesRecvd = client.Receive(rcvBuffer, 0, rcvBuffer.Length, SocketFlags.None)) > 0)
{
string buffer = Encoding.UTF8.GetString(rcvBuffer);
buffer.Trim();
Console.WriteLine("Vor verschlüsselung Buffer {0}", buffer);
buffer = ver.DecryptMessage(buffer, "Dominik");
Console.WriteLine(buffer);
not.NotifyBuffer(buffer, "Dominik");
//client.Send(rcvBuffer, 0, rcvBuffer.Length, SocketFlags.None);
//totalbytesEchoed += bytesRecvd;
}
client.Shutdown(SocketShutdown.Both);
client.Close();
}
catch (Exception e) {
Console.WriteLine(e.Message);
client.Close();
}
aber es funktioniert leider nicht, ich hoffe es kann mir jemand helfen.
Hallo,
die Funktion Trim() ändert den string nicht sie gibt nur den "getrimmten" string als Rückgabewert zurück.
buffer=buffer.Trim()
grüße
FZ
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
Klar funktioniert das nicht. Strings sind in .Net immutable, das heisst, dass sie nicht verändert werden können. Sämtliche "Mutators" auf Strings geben eine neue Instanz zurück. Also muss dein Code so aussehen:
buffer = buffer.Trim();
Gruß
Dario
edit: zu langsam, aber trotzdem mal zur Klarstellung, warum das so ist gepostet 😉
Guck doch mal im Debugger in den String, ob es wirklich Leerzeichen sind. Vielleicht sind es auch andere Steuerzeichen, die nicht dargestellt werden.
stimmt er stellt keine leerzeichen sondern \0\0\0
gesamt steht hier: yyMA8hlyDaoypyKLo1PKeQ==\0\0\0\0\0\0
jetzt habe ich das Prob umgeschrieben und verwende:
char[] trim = {'0','\\'};
buffer = buffer.TrimEnd(trim);
doch das funktioniert leider auch nicht...
\0 ist ein einzelnes Steuerzeichen und zwar um einen String zu terminieren. In C gibt es eben keine Strings, sondern nur Char-Arrays und die werden mit einem \0 terminiert.
Ich habe es geschafft funktioniert. Danke euch allen 😄
char[] trim = {'\0'};
war die lösung