【问题标题】:Android string processing from TCP stream来自 TCP 流的 Android 字符串处理
【发布时间】:2011-10-06 05:10:24
【问题描述】:

我有一个非常基本的 TCP 套接字连接到远程设备,我可以轮询状态。

除了我主要通过 asynctask 解决的套接字编程之外,我还试图想出一种方法来解析返回的字符串。

  1. 我使用“VOL?”之类的内容查询设备
  2. 设备以 12 种不同音频输出的音量响应: "VOL:33,0,21,12,0,43,0,0,0,0,20,0"

“:”字符始终且仅在初始命令的回显之后返回,因此我可以使用冒号之前的任何内容来标记即将到来的答案类型。(VOL、BAS、MUT、TRE、BAL , 等等) 在 VOL 的情况下,我只想将逗号之间的所有内容分块,这样我就可以将所有区域的卷切分并放入一个数组中。

我唯一能想到的就是获取字符串的长度,然后通过它运行一个for循环,一个一个地搜索逗号,但这看起来非常混乱:

    int oldPos = 0; //used in the upcoming 'if clause' to mark where the last comma was found
    int y = 0;      //used to old the resulting value's array position
    String strIncoming; = //the incoming TCP string
        for(int x = 0; x <= strIncoming.length(); x++){
            if(",".equals(strIncoming[x]){
                volzoneVal[y] = strIncoming.subString(oldPos,x);
                oldPos = x;
                y++;
            }
         }

必须有更好的方法,(我什至不确定这是否可行,我是第一次在这里输入它,因为我集思广益这个问题,所以它没有运行或编译)

有没有更好的方法来扫描字符串以查找命中?

【问题讨论】:

    标签: android string parsing


    【解决方案1】:

    使用 Java 的字符串拆分功能,并以逗号作为分隔符进行拆分。然后,您将拥有一个参数数组。如果您在每个响应中附加某种“结束字符串”字符,您将根据冒号作为开始和结束字符来知道开始和结束。

    【讨论】:

      【解决方案2】:

      首先,在冒号上拆分字符串,然后 split[0] 是您的类型。然后使用 split[1] 并用逗号分割它,您将准备好所有 12 个不同的输出(只需将它们转换为整数)。

      【讨论】:

        【解决方案3】:

        strIncoming.split(":")[0] 会给你第一个冒号之前的内容

        strIncoming.split(":")[1].split(",") 会给你一个单独的字符串数组

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-20
          • 2015-12-24
          • 1970-01-01
          • 2017-01-19
          • 1970-01-01
          • 2015-01-21
          • 1970-01-01
          • 2014-06-24
          相关资源
          最近更新 更多