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

做这个:

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

为此,您可以使用StringTokenizer(或)String.split 。

于 2012-07-18T19:12:43.220 回答
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

不确定它是否在 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]));
于 2016-01-21T07:16:32.110 回答