Write code to replace substring in a string recursively
//package com.book2s; public class Main { public static void main(String[] argv) { String template = "book2s.com"; String placeholder = "o"; String replacement = "O"; System.out.println(replace(template, placeholder, replacement)); }//from w w w. j ava 2 s. c o m public static String replace(String template, String placeholder, String replacement) { return replace(template, placeholder, replacement, false); } public static String[] replace(String templates[], String placeholder, String replacement) { String[] result = new String[templates.length]; for (int i = 0; i < templates.length; i++) { result[i] = replace(templates[i], placeholder, replacement); ; } return result; } public static String replace(String template, String placeholder, String replacement, boolean wholeWords) { int loc = template == null ? -1 : template.indexOf(placeholder); if (loc < 0) { return template; } else { final boolean actuallyReplace = !wholeWords || loc + placeholder.length() == template.length() || !Character.isJavaIdentifierPart(template.charAt(loc + placeholder.length())); String actualReplacement = actuallyReplace ? replacement : placeholder; return new StringBuffer(template.substring(0, loc)) .append(actualReplacement) .append(replace( template.substring(loc + placeholder.length()), placeholder, replacement, wholeWords)) .toString(); } } public static String toString(Object[] array) { int len = array.length; if (len == 0) return ""; StringBuffer buf = new StringBuffer(len * 12); for (int i = 0; i < len - 1; i++) { buf.append(array[i]).append(", "); } return buf.append(array[len - 1]).toString(); } }