String str = "filed1:=value1{$}filed2:=value2{$}filed3:=value3"
格式都是这样的,但也可能更长,比如可能是:
filed1:=value1{$}filed2:=value2{$}filed3:=value3{$}filed4:=value4............
也可能短,比如可能是:
filed1:=value1{$}filed2:=value2我会传一个filedX,希望能获得这个filedX对应的数值比如字符串是:
filed1:=value1{$}filed2:=value2我传:
filed1就返回字符串
value1我传:
filed2就返回字符串
value2
格式都是这样的,但也可能更长,比如可能是:
filed1:=value1{$}filed2:=value2{$}filed3:=value3{$}filed4:=value4............
也可能短,比如可能是:
filed1:=value1{$}filed2:=value2我会传一个filedX,希望能获得这个filedX对应的数值比如字符串是:
filed1:=value1{$}filed2:=value2我传:
filed1就返回字符串
value1我传:
filed2就返回字符串
value2
public class text {
public static void main(String[] args) {
String str = "filed1:=value1{$}filed2:=value2{$}filed3:=value3";
System.out.println(getMapVale(str, "filed1"));
}
public static String getMapVale(String str,String key){
Map<String, String> map=new HashMap<String, String>();
String[] split = str.split("\\{\\$\\}");
for(String s:split){
String[] split2 = s.split(":=");
System.out.println(split2[0]);
System.out.println(split2[1]);
map.put(split2[0].trim(), split2[1].trim());
}
String s = map.get(key);
System.out.println(map);
return s;
}
}
String pattern = Pattern.quote(filed) + ":=([^={]*)(?=\\{\\$}|\\s*$)";
Matcher m = Pattern.compile(pattern).matcher(src);
return m.find() ? m.group(1) : "";
}
//调用
String str = "filed1:=value1{$}filed2:=value2" ;
System.out.println(getValue(str,"filed1"));
System.out.println(getValue(str,"filed2"));
/*-------输出--------
value1
value2
*/
String str = "filed1:=value1{$}filed2:=value2" ;
如果把{$}的标示修改为{&}
正则里面也把$改为&
filed2输出就输出不了了啊。为什么啊?应该怎么修改呢?
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class CCCCCCCCCCC {
public static void main(String[] args) {
String str = "filed1:=value1{&}filed2:=value2";
String pattern = Pattern.quote("filed2")
+ ":=([^={]*)(?=\\{\\&}|\\s*&)";
Matcher m = Pattern.compile(pattern).matcher(str);
System.out.println(m.find() ? m.group(1) : "");
}
}
String pattern = Pattern.quote(filed) + ":=([^={]*)(?=\\{\\&}|\\s*$)";
Matcher m = Pattern.compile(pattern).matcher(src);
return m.find() ? m.group(1) : "";
}
//调用
String str = "filed1:=value1{&}filed2:=value2" ;
System.out.println(getValue(str,"filed1"));
System.out.println(getValue(str,"filed2"));
/*-------输出--------
value1
value2
*/