【发布时间】:2010-03-15 18:57:34
【问题描述】:
我有一个字节数组,它的末尾可能有也可能没有空字节。将其转换为字符串后,最后有一堆空格。我尝试使用 Trim() 来摆脱它,但它不起作用。转换字节数组后如何去掉字符串末尾的所有空格?
我写的是 C#。
【问题讨论】:
-
字节数组中的值是什么?您确定字节数组包含 ASCII 字符串而不是 Unicode 或 UTF-8?
我有一个字节数组,它的末尾可能有也可能没有空字节。将其转换为字符串后,最后有一堆空格。我尝试使用 Trim() 来摆脱它,但它不起作用。转换字节数组后如何去掉字符串末尾的所有空格?
我写的是 C#。
【问题讨论】:
Trim() 在您的情况下不起作用,因为它只删除空格、制表符和换行符 AFAIK。它不会删除 '\0' 字符。你也可以使用这样的东西:
字节[] bts = ...;
字符串结果 = Encoding.ASCII.GetString(bts).TrimEnd('\0');
【讨论】:
public string TrimNulls(byte[] data)
{
int rOffset = data.Length - 1;
for(int i = data.Length - 1; i >= 0; i--)
{
rOffset = i;
if(data[i] != (byte)0) break;
}
return System.Text.Encoding.ASCII.GetString(data, 0, rOffset + 1);
}
为了全面披露,我想非常清楚,这仅对 ASCII 可靠工作。对于任何多字节编码,这都会使床变得糟糕。
【讨论】: