1

サーバーから、次の形式の文字列を取得します。

String x = "fixedWord1:var1 data[[fixedWord2:var2 fixedWord3:var3 data[[fixedWord4]    [fixedWord5=var5 fixedWord6=var6 fixedWord7=var7]]] , [fixedWord2:var2 fixedWord3:var3 data[[fixedWord4][fixedWord5=var5 fixedWord6=var6 fixedWord7=var7]]]] fixedWord8:fixedWord8";

(単語と変数のペアのグループを区切るのはスペースだけです) 後で、それらをHashmap、 likemyHashMap.put(fixedWord1, var1);などに格納したいと思います。

問題:
最初の"data[......]"-tag 内で、他の"data[..........]"-tag の数が可変であり、事前に文字列の長さがわかりません。

に頼らずにそのような文字列を処理する方法がわかりませんString.split()。これは、割り当てタスクの提供者 (大学) によって推奨されていません。

私はインターネットを検索しましたが、そのようなことを説明している適切なウェブサイトを見つけることができませんでした. 経験豊富な人がウェブサイトへのリンクや「図式計画」
のようなものを教えてくれれば、何かをコーディングできるようになると非常に助かります。

編集: 文字列に誤りがあります ( off-topic-begin "please don't lynch" off-topic-end )、正しい文字列は (変更された fixedWord7=var7 ---to---> fixedWord7=[var7]):

String x = "fixedWord1:var1 data[[fixedWord2:var2 fixedWord3:var3 data[[fixedWord4]    [fixedWord5=var5 fixedWord6=var6 fixedWord7=[var7]]]] , [fixedWord2:var2 fixedWord3:var3 data[[fixedWord4][fixedWord5=var5 fixedWord6=var6 fixedWord7=[var7]]]]] fixedWord8:fixedWord8";
4

2 に答える 2

1

文字列は、「data」と「[」、「]」を含む同じパターンに従っていると思います。また、変数の名前/値にはこれらの文字列は含まれません

  1. 文字列"data["、 "["、 "]"、および "、"を元の文字列から削除します

    replaceAll("data[", "")
    replaceAll("[", "")
    etc
    
  2. 文字列をスペースで区切ります: "" StringTokenizerを使用するか、文字列文字を文字ごとにループします。

  3. 次に、次のような文字列の配列を取得します

    fixedWorld1:var1
    fixedWorld2:var2
    ......
    fixedWorld4
    fixedWorld5=var5
    ......
    
  4. 次に、サブ文字列を「:」または「=」で区切ります。名前/値をマップに入れます
于 2012-11-26T16:35:28.187 に答える