去除socket编程当中接收到的多余符\0
在socket编程当中,由于本人的服务器端采取的为异步接收,所以它可以获取到准确的数据接收长度
而在客户端是采用的同步方式,从而无法获取到(应该可能有方法我没有找到),这样导致了在接收数据时
除到接收到完整的数据以外,还多出了一个无关的数据"\0",还真是苦恼.难怪程序咋测试咋不对.但也不报错.
后来找到一个投机的方式,应该说是治村不治本的方式采用,字符串的TrimEnd()方法来去除到数据最后无关的多余数据
从当前 String 对象移除数组中指定的一组字符的所有尾部匹配项。 ... 从当前 String 对象移除数组中指定的一组字符的所有尾部匹配项。 命名空间: System 程序集: mscorlib(在 mscorlib.dll 中)
eg:string result=friendUserID.TrimEnd('\0');
在此里就顺便说下了字符串的一些操作.
(以下引自MSDN)
剪裁和移除字符
如果将一个句子分析成单个的单词,则最后的结果可能是单词的一端或另一端带有空格(也称为空白)。在这种情形下,可以使用 System.String 类中的剪裁方法之一来从字符串中的指定位置移除任何数量的空格或其他字符。下表描述了可用的剪裁方法。
从字符串的开头和结尾处移除空白。 |
|
从字符串的结尾处移除在字符数组中指定的字符。 |
|
从字符串的开头移除在字符数组中指定的字符。 |
|
从字符串中的指定索引位置移除指定数量的字符。 |
Console.WriteLine("Hello{0}World!", MyString );
string TrimString = MyString.Trim();
Console.WriteLine("Hello{0}World!", TrimString );
这段代码将以下两行显示到控制台。
HelloBigWorld!
TrimEnd
String.TrimEnd 方法从字符串的结尾移除字符,同时创建新的字符串对象。通过为此方法传递一个字符数组来指定要移除的字符。字符数组中的元素顺序并不影响剪裁操作。当找到未在数组中指定的字符时,剪裁停止。
下面的示例使用 TrimEnd 方法移除字符串最后面的字母。在此示例中,'r' 字符和 'W' 字符的位置反转,以阐释数组中字符的顺序并不重要。请注意,此代码移除 MyString 的最后一个单词和第一个单词的一部分。
string MyString = "Hello World!"; char[] MyChar = {'r','o','W','l','d','!',' '}; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString);
此代码将 He 显示到控制台。
下面的示例使用 TrimEnd 方法移除字符串的最后一个单词。在此代码中,单词 Hello 后尾随一个逗号,而由于在要剪除的字符的数组中没有指定逗号,因此剪裁在逗号处结束。
string MyString = "Hello, World!"; char[] MyChar = {'r','o','W','l','d','!',' '}; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString);
此代码将 Hello, 显示到控制台。
TrimStart
String.TrimStart 方法类似于 String.TrimEnd 方法,不同之处在于它通过从现有字符串对象的开头移除字符来创建新的字符串。通过向 TrimStart 方法传递一个字符数组来指定要移除的字符。使用 TrimEnd 方法时,字符数组中元素的顺序并不影响剪裁操作。当找到未在数组中指定的字符时,剪裁停止。
下面的示例移除字符串的第一个单词。在此示例中,'l' 字符和 'H' 字符的位置反转,以阐释数组中字符的顺序并不重要。
char[] MyChar = {'e', 'H','l','o',' ' };
string NewString = MyString.TrimStart(MyChar);
Console.WriteLine(NewString);
此代码将 World! 显示到控制台。
Remove