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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序