2011-07-15 12 views
0

ステータスをポーリングできるリモートデバイスへの非常に基本的なTCPソケット接続があります。TCPストリームからのAndroid文字列処理

私はasynctaskを通して大部分を理解したソケットプログラミング以外に、返す文字列を解析する方法を考え出しています。

  1. 私はデバイスに「VOL?」のような質問をします。
  2. 装置はこれに12個の異なるオーディオ出力の音量で応答: "VOL:33,0,21,12,0,43,0,0,0,0,20,0"

":"文字はいつも最初のコマンドのエコーの後に戻ってくるだけなので、コロンの前に来るものはどんな種類の答えが入っているかを示すことができます(VOL、BAS、MUT、TRE、BALなど)。 ) VOLの場合は、コンマの間にあるすべての部分をまとめてみたいので、すべてのゾーンのボリュームを整理して配列に入れることができます。

私は考えることができる唯一のことは、それがコンマ一つ一つを探してループのために実行し、文字列の長さをつかむことであるが、それは途方もなく厄介なようだ:

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++; 
      } 
     } 

そこは持っていますより良い方法であると確信しています(そして、私はこれがうまくいくかどうかもわかりません。私はこの問題をブレーンストーミングするので、初めてここに入力しているので、実行されていないか、コンパイルされていません)

ヒットを探している文字列をスキャンするより良い方法は?

答えて

0

strIncoming.split( ":")[0]最初のコロン

strIncoming.split( ":")の前に何であったか、あなたを与えるだろう[1] .splitを( "")のあなたの配列を与えます個々の文字列

0

最初に、コロンで文字列を分割し、split [0]があなたのタイプです。 split [1]をコンマで分割すれば、12種類の出力をすべて準備できます(整数に変換するだけです)。

0

Javaの文字列分割関数を使用し、区切り文字としてコンマで区切ります。次に、パラメータの配列を取得します。ある種の「終わりの文字列」文字を各レスポンスに付加すると、始まりのコロンと終わりの終わりの文字に基づいて、開始と終了を知ることができます。

関連する問題