日期:2014-05-20 浏览次数:20832 次
/** * 在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人民 */
------解决方案--------------------
/** * 在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; }