本帖最后由 poochuan 于 2011-10-03 15:04:33 编辑

解决方案 »

  1.   


        /**
         * 在source中,指定位置index的  before 替换成  after
         * @param   //index = 0,1,2,3,....
         *返回替换后的结果
         */
        public static String replace(String source,int index,String before ,String after){
    String regex = before;
    Matcher matcher = Pattern.compile(regex).matcher(source);
    for(int counter = 0;matcher.find();counter++) {
        if(counter == index)
        return source.substring(0,matcher.start())+ after + source.substring(matcher.end(),source.length());
          
    }
    return source;
        }    public static void main(String[] args) {
    String source = "人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民" ;
    for(int i=-1; i<6; i++)
    System.out.println(replace(source,i,"人民","我们"));//index = 0,1,2,3,....
        }
    /*
    人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民
    我们圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民
    人民圆顶困厄加压我们sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民
    人民圆顶困厄加压人民sdklkfsdalk我们lkkjfalakjdsf人民lkjsafdlkflk人民
    人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf我们lkjsafdlkflk人民
    人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk我们
    人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民*/
      

  2.   


        /**
         * 在source中,指定位置index的  before 替换成  after
         * @param   有效范围index = 0,1,2,3,....  个数-2, 个数-1. 即从下标0开始
         *返回替换后的结果,超过有效范围返回source
         */
        public static String replace(String source,int index,String before ,String after){
    Matcher matcher = Pattern.compile(before).matcher(source);
    for(int counter = 0;matcher.find();counter++) 
        if(counter == index)
        return source.substring(0,matcher.start())+ after + source.substring(matcher.end(),source.length());
    return source;
        }