【发布时间】:2011-10-06 05:10:24
【问题描述】:
我有一个非常基本的 TCP 套接字连接到远程设备,我可以轮询状态。
除了我主要通过 asynctask 解决的套接字编程之外,我还试图想出一种方法来解析返回的字符串。
- 我使用“VOL?”之类的内容查询设备
- 设备以 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++;
}
}
必须有更好的方法,(我什至不确定这是否可行,我是第一次在这里输入它,因为我集思广益这个问题,所以它没有运行或编译)
有没有更好的方法来扫描字符串以查找命中?
【问题讨论】: