2013-02-01 20 views
-2

我的字節數組,我希望直到收到\ n將它們轉換爲字符串時,那麼我想打一個新的字符串。就像:保存的 n字節[]轉換爲字符串

if (dataReceived.charAt(i) != '\n') { 
    parseCommand = parseCommand + dataReceived.charAt(i); 

} else if (dataReceived.charAt(i) == '\n') { 
    parseCommand = ""; 
} 

但是,當我從字節[]轉換爲字符串沒有\ n的測試字符串。我如何保護它們?做這個的最好方式是什麼?

緩衝傳入的字節數組/塊直到我有一個完整的行(例如,當收到一個換行符)然後從這些字節數組創建字符串,還是可以將它們保持在一個字符串中?

+1

你可以粘貼你用你的byte []轉換成字符串代碼? – Jason

+0

我剛剛有dataReceived = new String(data,「UTF-8」);如果有更好的方法很容易改變。 – Paul

+1

你試過尋找'\ r \ n'嗎? – waqaslam

回答

-1

試着做這樣的:

char c = dataReceived.charAt(i); 

if (c != '\n' && c != '\r') 
    parseCommand = parseCommand + c; 
else 
    parseCommand = ""; 
+0

if語句中的'||'不應該是'&&'嗎?現在它不會檢測到'c =='\ r''。 – Henrik

+0

@亨利克:是的,感謝您的更正:) – waqaslam

+0

這是好的,是的,謝謝。我的問題不是它看起來的代碼本身,而是每隔一次又一次的字符被跳過。這似乎是隨機的。例如,有時它會消失,有時甚至是正常的字符。 「IP地址」可以顯示爲「IP adess」,例如 – Paul

1

也許你應該嘗試Scanner

String data = ...; 
Scanner s = new Scanner(data); 
while (s.hasNextLine()) { 
    String next = s.nextLine(); 
    // do something with next 
} 
+0

這得到了一整行,並且說接收到的下一個字節是換行符,即使沒有換行符。因此,如果我將測試\ n作爲兩個字節數組,「測試」和「ing \ n」將計爲2行。 – Paul

+1

我不知道你在說什麼。 – Cephalopod

+0

由於我以字節數組的形式接收字節數組,因此此方法會生成錯誤的換行符。所以我可能會收到一個\ n每5個字節的數組,但這會計爲5行而不是一行。 – Paul