2016-05-23 8 views
0

私はので、私はカンマ,に分割し、キーと0その値としてcossnをロードする必要が(Map<String, String>)key=valueとしてマップにそれをロードする必要key1=value1, key2=value2のフォーマットである文字列の下に持っています。地図でキー=値のペアを含む文字列を解析しますか?

String payload = "cossn=0, itwrqm=200006033213"; 
Map<String, String> holder = 
      Splitter.on(",").trimResults().withKeyValueSeparator("=").split(payload); 

ここで私の仕事をするためにスプリッタを使用していますが、いくつかのケースでは失敗しています。私の文字列の中には、値に等号のある文字列があります。だから、文字列の下でそれは私のために失敗していた:

String payload = "cossn=0, abc=hello/=world"; 

私はそれを上のケースのために働かせることができますか?上記の場合、keyabcになり、値はhello/=worldになります。これは可能ですか?

+0

どのようにすることができます正確に何をするの?スプリッター? Java?これを行うにはさまざまな方法がありますが、多分、関数の文字列は機能しません。 – Tibrogargan

+0

スプリットコールに2を追加すると効果があります。 –

+0

分割に2を加えた後、このエラーが表示されます。「Splitter.MapSplitterタイプのメソッドsplit(CharSequence)は引数(String、int)には適用できません。 – user1950349

答えて

2

あなただけのあなたが直接Splitter APIでこれと同じことを行うことができます

import java.util.HashMap; 

public class HelloWorld{ 

    public static void main(String []args){ 
     HashMap<String, String> holder = new HashMap(); 
     String payload = "cossn=0, abc=hello/=world"; 
     String[] keyVals = payload.split(", "); 
     for(String keyVal:keyVals) 
     { 
      String[] parts = keyVal.split("=",2); 
      holder.put(parts[0],parts[1]); 
     } 

    } 
} 
+0

これは、Splitter.MapSplitterタイプのメソッドsplit(CharSequence)が引数(String、int) 'に適用されないというエラーです。 – user1950349

+0

あなたは代わりにループを使用すると考えていますか? –

+0

あなたはどのようにすればよいかの例を教えていただけますか? – user1950349

3

を分割するために2を追加したいどのように多くの分割と言うの番号を追加することができます。

Map<String, String> result = Splitter.on(',') 
    .trimResults() 
    .withKeyValueSeparator(
     Splitter.on('=') 
      .limit(2) 
      .trimResults()) 
    .split(input); 
関連する問題