java—将字符串生成器拆分为特定字符的字符串

zynd9foi  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(425)

im发送到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,然后下一次连接建立时获取rest 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 然后把它连到第一部分,第二部分,一直读到第二部分 \r\n 这是一个例子: 3 44 55 66 77 88 \r\n 基本上,在一个连接会话中,可以发送2.5个str字符串。

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);
gblwokeq

gblwokeq1#

你可以用 substring() string类的方法如下:

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

然后将子字符串前置到下一个字符串。
希望有帮助!

相关问题