String str = "A=10!B=20!C=30!D=40"
我想通过一个正则
Map map = new HashMap();
map.put("A", "10");
map.put("B", "20");
map.put("C", "30");
map.put("D", "40");
可以实现不? :D :shock:
[code="java"]
public static Map split(String str){
Matcher m=Pattern.compile("([^!]+)=([^!]+)").matcher(str);
Map map = new HashMap();
while(m.find()){
map.put(m.group(1),m.group(2));
}
return map;
}
[/code]
不需要正则,
String[] array = str .split("!");
for () {
String[] pair = array [i].split("=")';
map.put(pair[0],pair[1]);
}
你这个用正则还不太好搞。
Map<String, String> map = new HashMap<String, String>();
String str = "A=10!B=20!C=30!D=40";
Pattern p = Pattern.compile("[A-Z]=[0-9]*");
Matcher match = p.matcher(str);
while (match.find()) {
String s = match.group();
map.put(s.substring(0, s.indexOf("=")), s.substring(s.indexOf("=") + 1, s.length()));
}
[code="java"]
String str = "A=10!B=20!C=30!D=40";
Pattern p = Pattern.compile("(\S)=([\d]*)");
Matcher match = p.matcher(str);
Map map = new HashMap();
while (match.find()) {
map.put(match.group(1), match.group(2));
}
System.out.println("哦了!");
[/code]
正则表达式:([A-Z])=[0-9]{1,2}
循环取每个group的值,map.put(group(1),group(2));
[code="java"]Pattern pattern = Pattern.compile("(\w+)=(\d+)!?");
Matcher matcher = pattern.matcher("A=10!B=20!C=30!D=40" );
while(matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}[/code]
[code="java"]
String str = "A=10!B=20!C=30!D=40";
Map map = new HashMap();
Pattern pattern = Pattern.compile("([a-zA-Z]+)=([\d]+)[!]*");
Matcher matcher = pattern.matcher(str );
while(matcher.find()){
map.put(matcher .group(1),matcher .group(2));
}
[/code]