String.Trim()不会删除空格

时间:2013-11-13 21:55:28

标签: c# arrays byte trim

我有一个小程序,可以从文件中加载或保存字节数组。在这个字节数组中包含一个字符串,例如:

byte[] header = new byte[64]; //the actual array is larger, but this is for explaining purposes only...
string savedString = Encoding.ASCII.GetString( header, 0, 64 );

因为我用来写文件的字符串只有5个字符长,所以“savedString”加载为“string”e.t.c. 但是,在这种情况下,我没有后顾之忧,我只是添加了

.Trim();

Encoding.ASCII.GetString( header, 0, 64 );

然而这仍然没有在加载时将字符串缩减到正确的大小,所以我猜测填充不是由空格组成的?

感谢。

1 个答案:

答案 0 :(得分:1)

字节数组最初用零填充,表示的字符是控制字符,而不是空白字符。尝试专门修剪这些零字符:

savedString.Trim('\0');

例如:

byte[] header = new byte[64];
header[0] = (byte)'A';
string savedString = Encoding.ASCII.GetString(header, 0, 64);

var output1 = savedString.Trim();
Console.WriteLine("{0} ({1})", output1, output1.Length); // A□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ (64)
var output2 = savedString.Trim('\0');
Console.WriteLine("{0} ({1})", output2, output2.Length); // A (1)