2016-07-14 23 views
-2
Map<String, String> fieldMap = new HashMap<String, String>(); 

String strTest1 = "Q1 = '1PAaEaO5Js+zUErWe1Ns8fR==' and q2 = 'v21PAaEaO5Js+zUErWe1Ns8fR='"; 
String strTest2 = "Q1='1PAaEaO5Js+zUErWe1Ns8fR==' and q2='v21PAaEaO5Js+zUErWe1Ns8fR='"; 

String[] output = input.split("\\s+and\\s+"); 
     for(String s:output){ 
      String [] params = s.split("="); 

      String key = params[0].trim(); 
      String value = params[1].trim(); 
      fieldMap.put(key, value.substring(1, value.length()-1));   

     } 
    System.out.println(fieldMap); 

私は上記の例を試してみましたが、strTest1でも問題ありません。 しかし、それはstrTest2のために解析していません。分割文字列の正規表現

期待出力:{Q1 = 1PAaEaO5Js + zUErWe1Ns8fR ==、 Q2 = v21PAaEaO5Js + zUErWe1Ns8fR =}

我々はによって分割されているよう=しかし、値

から排除されるべきではありませんありがとう

+0

ここで問題は何ですか? – f1sh

+0

問題は、String [] params = s.split( "\\ s + = \\ s");を使用する場合です。最初のテスト文字列は渡されますが、2番目の文字列は渡されません。 – user2519513

+0

strTest1とstrTest2の両方が – user2519513

答えて

0

あなたはそれをそれぞれ '='で分割しています。さらに3つの構文解析を混乱させます。

Map<String, String> fieldMap = new HashMap<String, String>(); 

String strTest1 = "Q1 = '1PAaEaO5Js+zUErWe1Ns8fR==' and q2 = 'v21PAaEaO5Js+zUErWe1Ns8fR='"; 
String strTest2 = "Q2='1PAaEaO5Js+zUErWe1Ns8fR==' and q3='v21PAaEaO5Js+zUErWe1Ns8fR='"; 

String[] lines={strTest1,strTest2}; 
for (String input:lines){ 
    String[] output = input.split("\\s+and\\s+"); 
      for(String s:output){ 
       String [] params = s.split("=",2); 

       String key = params[0].trim(); 
       String value = params[1].trim(); 
       fieldMap.put(key, value.substring(1, value.length()-1));   

    } 
} 
System.out.println(fieldMap); 
+0

を参照して、トークンを2つに制限する必要があります。 – jessarah

関連する問題