当前位置: 代码迷 >> J2EE >> replaceAll的正则表达式
  详细解决方案

replaceAll的正则表达式

热度:6   发布时间:2016-04-17 23:23:52.0
求一个replaceAll的正则表达式
需求:把一个字符串中间的字符都替换成星号,只保留头和尾的字符,如下,
String name="abcd";
String regex = "";//需要完成的正则表达式
System.out.println(name.replaceAll(regex, "*"));//想得到的结果是a**d
------解决思路----------------------
直接字符串截取不得了?
第一个字符能取到吧?最后个字符能取到吧?
字符串长度能取到吧?
拼吧~
------解决思路----------------------
直接取第一个和最后一个字符中间的全换掉
------解决思路----------------------
楼上的方法可以, 正则的话这么写


public static void main(String[] args) throws Exception {
    String str = "abcdefg";
    //{}里面的数字可以用来指定前后缀的长度
    String regex = "(\\w{1})(.*)(\\w{1})";
    
        Matcher m = Pattern.compile(regex).matcher(str);
        if (m.find()) {
            String rep = m.group(2);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < rep.length(); i++) {
                sb.append("*");
            }
            
            System.out.println(str.replaceAll(rep, sb.toString()));
        }
}