将字符串构建器拆分为字符串bu特定字符

时间:2017-07-14 18:54:39

标签: java android bluetooth

我发送给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我不会遗漏任何角色,但......但是必须要有人将它解析为正确的单独按摩。

所以我需要做的是将此构建器拆分为\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个半的Str String来发送。

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

1 个答案:

答案 0 :(得分:0)

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

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

然后将该子字符串添加到下一个String。

希望它有所帮助!