我有一個字節數組,它可能有或沒有空字節在它的末尾。將它轉換爲一個字符串後,我在最後有一堆空格。我嘗試使用修剪()來擺脫它,但它不起作用。如何在轉換字節數組後刪除字符串末尾的所有空格?在ASCIIEncoding.GetString(byte [])之後表示空字節的字符是什麼?
我寫這是C#。
我有一個字節數組,它可能有或沒有空字節在它的末尾。將它轉換爲一個字符串後,我在最後有一堆空格。我嘗試使用修剪()來擺脫它,但它不起作用。如何在轉換字節數組後刪除字符串末尾的所有空格?在ASCIIEncoding.GetString(byte [])之後表示空字節的字符是什麼?
我寫這是C#。
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只工作。對於任何多字節編碼,這將廢話牀。
Trim()在您的情況下不起作用,因爲它僅刪除空格,製表符和換行符AFAIK。它不會刪除'\ 0'字符。你也可以使用這樣的東西:
byte [] bts = ...;
string result = Encoding.ASCII.GetString(bts).TrimEnd('\ 0');
對我來說也許並不是最有效的一個(擁有20k的「0」),但作爲一種魅力。謝謝 – 2015-10-08 16:40:53
字節數組中的值是什麼?你確定字節數組包含一個ASCII字符串而不是Unicode或UTF-8嗎? – 2010-03-15 19:01:32