public class cs { public static void main(String[] args) {
String a="aaaaaw2waaa";
        System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public static String func(String num){
num+="这里要能获得$1的值,能够在这里操作";
return num;
}

} 要能在func()中获得$1的值操作,然后返回给replaceall这里面,要怎么做啊?其中要判断替换的aw2wa有多处。
也不一定非要用replaceall,如有一个方法public String func(String str){}
只要能将字符串中所有的aw[数字]wa替换成aw[func(数字)的返回值]wa便可这个正则替换在网站中执行的次数极频繁,要怎样写呢?

解决方案 »

  1.   

    传入func的是一个$1,而不是$1获取的字符串啊
    怎样能将$1获取的字符串传入func呢
      

  2.   


    public static void main(String[] args) {
     String a="aaaaaw2waaa";
            System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
        }
        public static String func(String num){
            num+="111";
            return num;
        }结果:aaaa2111aa有什么不对不?我用的是1.5
      

  3.   

    执行语句打印出
    aaaa2这里要能获得2的值,能够在这里操作aa
    这效果好着呢么
      

  4.   


    public class cs {    public static void main(String[] args) {
            String a="aaaaaw2waaa";
            System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
        }
        public static String func(String num){
            num+="真的不明白,你的能满足要求啊!";
            return num;
        }
        
    }
    //打印结果:aaaa2真的不明白,你的能满足要求啊!aa着色的地方就是你传入的啊!
      

  5.   

    传进func()的是"$1"这个字符串,在func中num+="111";返回的是$1111,
    结果成了这样了:a.replaceAll("aw(\\d*)wa","$1111");但如果func换成:public static String func(String num){
    Integer.parseInt(num);就不行了,传入的是一个"$1"
                num+="111";
                return num;
            }
      

  6.   


    public static void main(String[] args) {
    String a="aaaaaw2waaa";
    Matcher m = Pattern.compile("aw(\\d*)wa").matcher(a);
    while(m.find()){
    System.out.println(func(m.group(1)));
    }
            
        }
        public static String func(String num){
         System.out.println("num = "+Integer.parseInt(num));
            num+="楼主是不是要传结果啊!";
            return num;
        }
    你要的是不是num不是$1,而是从字符a中截取的数字?
      

  7.   


    //是这个需求么?对文本中某种特殊字符串做一些简单的拼接处理。
          String a="aaaaaaw123wa456";
          System.out.println(a.replaceAll("(?<=aw)(\\d*)(?=wa)","经过包装的【$1】在此"));
      

  8.   

    谢谢楼上的各位朋友了public static void main(String[] args) {
            String a="aaaaaw2waaaw345wa";
            Matcher m = Pattern.compile("aw(\\d*)wa").matcher(a);
            while(m.find()){
             a=a.replaceFirst("aw\\d*wa", func(m.group(1)));
            }
            
            System.out.println(a);
        }
        public static String func(String num){
            System.out.println("num = "+Integer.parseInt(num));
            num+="楼主是不是要传结果啊!";
            return num;
        }