当前位置: 代码迷 >> J2SE >> 请问java 替换指定出现位置的字符串
  详细解决方案

请问java 替换指定出现位置的字符串

热度:314   发布时间:2016-04-24 12:34:42.0
请教java 替换指定出现位置的字符串
各位大侠:
  小弟有这样一个字符串:"人民圆顶困厄加压人民sdklkfsdalk人民lkkjfalakjdsf人民lkjsafdlkflk人民"

  上面的字符串中共出现了5次人民,我想写个方法来随机替换指定出现次数的字符串,不知道怎么实现,请大家指教下,比如

  public static String replace(String source,int index){
   
  }

  我调用这个方法的时候,这样调用,replace(source,3),这样就只是把出现在第3个位置的人民替换掉了,其它地方的人民还是保持不变,想了半天,没折了,来此请教,小弟万分感激.

------解决方案--------------------
Java code
    /**     * 在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人民*/
------解决方案--------------------
Java code
    /**     * 在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;    }
  相关解决方案