2

これが私のものStringです:

&username=john&password=12345&email=john@go.com

これをキー/値の文字列に分解してパラメーターとして追加できるようにするための最良かつ最も効率的な方法は何ですか。これが私が必要とするものの模擬例です:

for (set in array)
{
   params.add(new BasicNameValuePair(set.key, set.value));
}
4

5 に答える 5

2

この質問を参照してください: Android でのクエリ文字列の解析

Android では、Apache ライブラリがクエリ パーサーを提供します。

http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URLEncodedUtils.html

于 2012-07-18T19:17:37.267 に答える
2

これを行う:

String all = "&username=john&password=12345&email=john@go.com";
//Split across all instances of the 'and' symbol
String[] keyValueConcat = all.split("&");
Map<String, String> kvPairs = new HashMap<String, String>();
for (String concat : keyValueConcat) {
    if (concat.contains("=") {
        //For any string in the split that contains an equals sign
        //Split over the equals sign and add to the map
        String[] keyValueSplit = concat.split("=", 2);
        kvPairs.put(keyValueSplit[0], keyValueSplit[1];
    }
}

そして、マップ kvPairs には必要なものが含まれているはずです。

于 2012-07-18T19:16:20.597 に答える
0
String exp="&username=john&password=12345&email=john@go.com"
String[] pairs=exp.split("&");
String[] temp;
Map<String, String> myMap= new HashMap<String, String>();

for(i=0;i<pairs.length;i++){
temp=pairs[i].split("=");
myMap.put(temp[0],temp[1]);

}
于 2012-07-18T19:23:03.970 に答える
0

この目的には、 StringTokenizer (または) String.splitのいずれかを使用できます。

于 2012-07-18T19:12:43.220 に答える
0

Android用のJavaで利用できるかどうかはわかりませんが、Java 8では、以下を使用して文字列をキーと値のペアに分割できます。

String string = "&username=john&password=12345&email=john@go.com";
Map<String, String> map= Stream.of(string.split("&")).map(p->p.split("=")).filter(p->p!=null && p.length==2).collect(Collectors.toMap(p->p[0], p->p[1]));
于 2016-01-21T07:16:32.110 に答える