求一条正则语句,把字符串 abcadafghat 的a后面的那个字母变成大写,即最终结果是aBcaDaFghaT!!!不要拆分字符串的,先split(“a”),然后把第一个字母都变成大写再拼起来那样的,太麻烦!!!要精益求精的,最好一条语句就搞定,那才是高手!!!

解决方案 »

  1.   

    '/a([^a]?)/i'  这个正则可以匹配所有将要替换的字符 
      

  2.   

    一句话内貌似没办法在replaceAll的参数阶段直接对所获得的Back Reference进行大写操作 只能对识别串进行获取
    a(\\w) 对toUpperCase方法而言,back referenc \n 不具备特殊含义
      

  3.   


    String input = "abcadafghat";String regex = "a(\\w)";
    Matcher m = Pattern.compile(regex).matcher(input);
    while (m.find()) {
        String temp = m.group();
        String uppercase;
        uppercase = temp.replaceAll("a(\\w)", "$1").toUpperCase();
        input = input.replace(temp, "a" + uppercase);
    }System.out.println(input);
      

  4.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test{
    public static void main(String []args)
    {
    Pattern p = Pattern.compile("a([b-z])");
    String str = "abcadafghat";
    Matcher m = p.matcher(str); while(m.find()){

                           str= str.replace(str.charAt(m.end()-1), m.group(1).toUpperCase().charAt(0));
    }
    System.out.println(str);
    }
    }