2015-12-22 111 views
1

從字節數組創建字符串時遇到問題,其中構建字符串時忽略數組中的0值。我怎麼能這樣做,如果字節值是0,字符串只是簡單地添加一個空格而不是刪除它。Java從包含空格的字節數組創建字符串

例如,輸出爲DT_TestTracelineCTestTraceli

public static void main(String[] args) { 
    byte[] text = {68, 84, 95, 84, 101, 115, 116, 84, 114, 97, 99, 101, 108, 105, 110, 101, 0, 0, 0, 0, 67, 84, 101, 115, 116, 84, 114, 97, 99, 101, 108, 105}; 
    System.out.println(new String(text)); 
} 

我怎樣才能使這樣我就可以使用製表符分隔這兩個字符串或使用空格所以輸出DT_TestTraceline CTestTraceli

感謝

+2

我相信你也應該告訴我們哪些_encoding_您正在使用解碼字節數組。 –

+0

我正在將內存中的字節直接讀入一個字節數組中。 –

+0

我測試了代碼輸出是:DT_TestTraceline CTestTraceli – Abdelhak

回答

9

你應該指定一個編碼new String() - 無其一,您使用的是平臺默認值(這會讓您的代碼更加便於攜帶,因爲您現在正在假設您正在執行的環境)。

假設你使用UTF-8,你可以用32替換所有的零,爲空格字符的UTF-8編碼,它應該工作:

for(int i = 0; i < text.length; i++) { 
    if(text[i] == 0) { 
     text[i] = 32; 
    } 
} 
String result = new String(text, StandardCharsets.UTF_8); 

你可以看到它的工作on ideone

4

一個辦法是把它變成一個字符串,並更換「0」字符與字符代碼空間,任何字符編碼,你之前迭代這個數組使用