teleport01 2010-01-20 14:32
浏览 245
已采纳

正则表达式替换字符串

我有一个字符串:
[code="java"]String str = "{1,1,2} + {3,2,1} + {$1}";[/code]
请教各位,使用正则表达式把“{...}”直接替换成字母。
替换后的结果:
[code="java"]String str = "a + b + c";[/code]
a、b、c是根据“{...}”的个数自增的,如果有4个“{...}”那个替换后的字母就是a、b、c、d。
替换完字符串后,同时替换的字母会被记录在Map集合里面:
[code="java"]
key="a",value="{1,1,2}"
key="b",value="{3,2,1}"
...
[/code]

各位帮忙看下正则表达式方不方便解决以上问题,或者有更好的思路就可以提供给我,谢谢。

  • 写回答

5条回答 默认 最新

  • wanghaolovezlq 2010-01-20 14:48
    关注

    帮你写了一个

    [code="java"]
    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Matcher;

    import java.util.regex.Pattern;

    public class RegExp
    {

    /**
     * TODO 方法说明
     *
     * @param args
     */
    
    public static void main(String[] args)
    {
        String str = "{1,1,2} + {3,2,1} + {$1} + {$1}";      
    
        Pattern pattern = Pattern.compile("\\{[^\\{\\}]*\\}");      
    
        Matcher matcher = pattern.matcher(str);                  
    
        char a= 97;
        Map<String,String> map = new HashMap<String,String>();
        String ret = str;
        String temp = "";
        while(matcher.find()){  
            temp = "" + a;
            map.put(temp, matcher.group());
            ret = ret.replaceFirst("\\{[^\\{\\}]*\\}", temp);
            ++a;
        } 
    
        System.out.println(map);
        System.out.println(ret);
    }
    

    }

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题