2017-07-14 156 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()); 

,然后前置一个子下一个字符串。

希望它有帮助!

相关问题