Pet*_*rey 27
我会用拆分
String text = "A=B&C=D&E=F";
Map<String, String> map = new LinkedHashMap<String, String>();
for(String keyValue : text.split(" *& *")) {
String[] pairs = keyValue.split(" *= *", 2);
map.put(pairs[0], pairs.length == 1 ? "" : pairs[1]);
}
Run Code Online (Sandbox Code Playgroud)
EDIT允许填充空格和具有=或没有值的值.例如
A = minus- & C=equals= & E==F
Run Code Online (Sandbox Code Playgroud)
只需使用番石榴分离器
\n\nString src="A=B&C=D&E=F";\nMap map= Splitter.on(\'&\').withKeyValueSeparator(\'=\').split(src)\xef\xbc\x9b\nRun Code Online (Sandbox Code Playgroud)\n
public class TestMapParser {
@Test
public void testParsing() {
Map<String, String> map = parseMap("A=B&C=D&E=F");
Assert.assertTrue("contains key", map.containsKey("A"));
Assert.assertEquals("contains value", "B", map.get("A"));
Assert.assertTrue("contains key", map.containsKey("C"));
Assert.assertEquals("contains value", "D", map.get("C"));
Assert.assertTrue("contains key", map.containsKey("E"));
Assert.assertEquals("contains value", "F", map.get("E"));
}
private Map<String, String> parseMap(final String input) {
final Map<String, String> map = new HashMap<String, String>();
for (String pair : input.split("&")) {
String[] kv = pair.split("=");
map.put(kv[0], kv[1]);
}
return map;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30315 次 |
| 最近记录: |