これが私のものString
です:
&username=john&password=12345&email=john@go.com
これをキー/値の文字列に分解してパラメーターとして追加できるようにするための最良かつ最も効率的な方法は何ですか。これが私が必要とするものの模擬例です:
for (set in array)
{
params.add(new BasicNameValuePair(set.key, set.value));
}
この質問を参照してください: Android でのクエリ文字列の解析
Android では、Apache ライブラリがクエリ パーサーを提供します。
http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
これを行う:
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 には必要なものが含まれているはずです。
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]);
}
この目的には、 StringTokenizer (または) String.splitのいずれかを使用できます。
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]));