2017-07-14 149 views
0

我發送給安卓單獨的按摩程序: 11 22 33 44 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n。將字符串生成器拆分爲字符串字符串特定字符

但是,當連接建立到緩衝區時,隨機獲取readMassage,可能是11 22 33 44 55 66 77 88 \ r \ n 11 22 33 4,然後下一次建立連接建立休眠狀態4 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n我不會錯過任何角色,但....但必須要一些如何解析它到正確的單獨的按摩。

所以我需要做的是將這個生成器分成一個字符串\r\n併發送它像11 22 33 44 55 66 77 88 \r\n更遠。 - 砰

但事情是在這裏,我需要不僅將它們分開第一,但也不知何故捕獲第一次讀的最後一部分\r\n這是在這個例子中11 22 3後再CONCAT它的第一部分第二次讀到\r\n這就是這個例子:3 44 55 66 77 88 \r\n

基本上在一個連接會話它可能是2和一半的字符串要發送。

public void run() { 
     Log.d(TAG2, "run start"); 
     byte[] buffer = new byte[512]; // buffer store for the stream 
     int intBytes; // bytes returned from read() 

     // Keep listening to the InputStream until an exception occurs 
     StringBuilder readMessage = new StringBuilder(); 



     while (true) { 
      try { 
       intBytes = mmInStream.read(buffer);// считываю входящие данные побайтно из потока 
       String readed = new String(buffer, 0, intBytes); //и собираю в строку ответа 


        readMessage.append(readed); 

      if(readMessage.toString().contains("\r\n")){ 


       String Str = readMessage.toString(); 
       Str = Str.replace("\n", ""); 

       // DO SOMETHING HERE with Str So the on one readMessage it could be two different Str to send in farther. And part of the next Str save some how 

         mHandler.obtainMessage(MESSAGE_READ, Str.length(), -1, Str).sendToTarget(); 
         readMessage.setLength(0); 
+0

你介意寫清楚嗎?也許你正在尋找'substring(int start,int end)'。第一個是包容性的,第二個是排他性的。 – Garamaru

+0

好的。是。從點到點的子字符串將首先發送Str,但是當您不知道何時完成時,如何處理readMessage的最後部分。我的意思是readMassage是每次不同的長度。我發送到Android像它的所有不同的按摩:11 22 33 44 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n。但是可以在readMassage中隨機獲取,它可以是11 22 33 44 55 66 77 88 \ r \ n 11 22 33 4,然後下一次創建連接4 55 66 77 88 \ r \ n 11 22 33 44 55 66 77 88 \ r \ n我不會錯過任何字符,但.... – SyRus

+0

永遠不要在評論中提供更多信息。編輯你的問題。無論如何你應該這樣做。提示:預覽窗口存在的原因。爲了防止你對你要求花時間幫助你解決問題的人傾倒如此混亂。 – GhostCat

回答

0

您可以使用String類的substring()方法如下圖所示:

readMessageString.substring(readMessageString.lastIndexOf("\r\n"), 
          readMessageString.length()); 

,然後前置一個子下一個字符串。

希望它有幫助!

相關問題