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

解决方案 »

  1.   

    自己写了个,你看看,伸缩性不是太好..........
    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;
    }
    }
      

  2.   

    怎以觉得以前写过呢public static String getValue(String src, String filed) { 
        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
    */
      

  3.   

    发现个很奇怪的问题啊。
    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) : "");
    }
    }
      

  4.   

    后面的$不要替换,这个不是指字符“$”,而是指字符串的结尾public static String getValue(String src, String filed) { 
        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
    */