有一字符串,格式大慨是XXX{variableA}XXXX{variableB}XXX{variableC}
我希望能取到大括号里面的变量名称,变量名不是固定,个数不固定,
然后我需要根据这个变量名称取出对应的内容,替换原字符串中的大括号中的部分,请问这个正则该怎么写?
应该要分两步,第一步是取出各个变量名,然后是替换原字符串,AS,JS或JAVA版都可以。

解决方案 »

  1.   

    举个具体点的例子:
    源字符串是:  我的名字是{name},性别是{sex}。
    已经知道name="张三";  sex="男";  
    如果已经知道String s1 = "name"; String s2 = "sex";
    可以通过Object[s1] = "张三";
    Object[s2] = "sex";怎么替换到原字符串中?
      

  2.   

    在jsp页面中的话。 
    直接将你的变量<%= %>不就行了??如果要替换,可以用replaceXXX()  。
      

  3.   

    用JAVA实现的,查找所有大括号中的内容
    public static void main(String[] args) {
    String str = "XXX{variableA}XXXX{variableB}XXX{variableC} ";
    String regex = "\\{([^}]*)\\}";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println(m.group(1));
    }

    String variableA="changeA";
    String variableB="changeB";
    String variableC="changeC"; }替换那部分没有看懂什么意思
      

  4.   

    如果XXX和variable都不是固定个数和内容的话。正则能办到么??  有悬念!
      

  5.   

    如果你的值在Map中的话,可以这样
    String str = "XXX{variableA}XXXX{variableB}XXX{variableC}";
    Map<String, String> val = new Hashtable<String, String>();
    val.put("variableA", "a");
    val.put("variableB", "b");
    val.put("variableC", "c");
    List<String> list = new ArrayList<String>();
    String reg = "\\{([a-zA-Z]*)\\}";
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(str);
     while (m.find()) {
     list.add(val.get(m.group(1)));
     }
     System.out.println(list);
      

  6.   

    如果你的变量可以是字符、数字、下划线,那么,直接把
    String reg = "\\{([a-zA-Z]*)\\}";
    换成
    String reg = "\\{(\\w*)\\}";
      

  7.   

    自己用循环的土办法实现了,
    while(sValue.indexOf("{") != -1)
    {
    var parameter:String = sValue.substring(sValue.indexOf("{")+1, sValue.indexOf("}"));
    sValue = sValue.replace("{"+parameter+"}", item.@[parameter]);
    }
    一会再看看正则匹配能不能实现,关键是对正则不是很熟