我目前正在編寫一個多人遊戲,而且我現在正在聯網這方面工作。我建立了一個數據包系統,它的工作方式(至少使用字符串)是,它需要多個字符到最多的「X」字符。字符被轉換爲字節發送到服務器。如果少於X個字符,則其餘字節設置爲0.問題是,在服務器上處理此信息並將其轉換爲字符串時,我的控制檯中的0字節字符爲'□',並且在我的JTextPane中不可見。如何以乾淨的方式從字符串中刪除所有這些0字節的字符?我寧願不要有另一個循環和更多的變量只是爲了在轉換爲字符串之前刪除0字節。沒有人喜歡骯髒的代碼。 :P刪除字符串中的0字節(UTF-8)字符
分組數據:
03100101118000000000971001091051100000000
- 03 =數據包ID(不相關)
- 100101118000000000 =用戶名( 「開發」)
- 971001091051100000000 =密碼( 「管理員」)
結果字符串:
- usernameString = 「開發□□□□□□□□□」
- passwordString = 「管理員□□□□□□□」
我已經試過:
usernameString.replaceAll(new String(new byte[] {0}, "UTF-8"), "");
passwordString.replaceAll(new String(new byte[] {0}, "UTF-8"), "");
但是,這並沒有改變字符串。
使用一些正則表達式來串的數學端爲一個或多個'0' –
如果您正在使用Java 7或更高版本,最好使用「StandardCharsets.UTF_8」常量而不是「UTF-8」文字。這是更快的,你不需要處理/重新拋出UnsupportedEncodingException。 –
@TagirValeev哇我從來沒有意識到'StandardCharsets.UTF_8'與''UTF-8''文字相比有多快。萬分感謝。 – TheNewGuy