Laz*_*zlo 22 c# arrays string byte trim
我有一个类似于此的字节数组(16字节):
71 77 65 72 74 79 00 00 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
我用它来将它转换为字符串并修剪结束空格:
ASCIIEncoding.ASCII.GetString(data).Trim();
Run Code Online (Sandbox Code Playgroud)
我得到的字符串很好,但它仍然有所有结束空格.所以我得到类似的东西"qwerty.........."
(由于StackOverflow,点是空格).
我究竟做错了什么?
我也尝试使用.TrimEnd()并使用UTF8编码,但它不会改变任何东西.
提前致谢 :)
Wal*_*t W 32
你必须要TrimEnd(new char[] { (char)0 });
解决这个问题.它不是空格 - 它实际上是奇怪转换的空字符.我也有这个问题.
x0n*_*x0n 22
他们不是真正的空间:
System.Text.Encoding.ASCII.GetString(byteArray).TrimEnd('\0')
Run Code Online (Sandbox Code Playgroud)
......应该做的伎俩.
-Oisin
默认情况下修剪仅删除空白,其中定义了空格char.IsWhitespace
.
'\0'
是一个控制字符,而不是空格.
您可以使用Trim(char[])
重载指定要修剪的字符:
string result = Encoding.ASCII.GetString(data).Trim(new char[] { '\0' });
Run Code Online (Sandbox Code Playgroud)