这是我的String
:
&username=john&password=12345&email=john@go.com
将其分解为键/值字符串以便它们可以作为参数添加的最好和最有效的方法是什么。这是我需要的一个模拟示例:
for (set in array)
{
params.add(new BasicNameValuePair(set.key, set.value));
}
做这个:
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 应该包含您需要的内容。
看到这个问题:Parsing query strings on Android
在 Android 上,Apache 库提供了一个查询解析器:
http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
为此,您可以使用StringTokenizer(或)String.split 。
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]);
}
不确定它是否在 java for android 中可用,但在 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]));