diff --git a/src/java/org/apache/commons/lang/StringUtils.java b/src/java/org/apache/commons/lang/StringUtils.java index 87673db4f..87b816e33 100644 --- a/src/java/org/apache/commons/lang/StringUtils.java +++ b/src/java/org/apache/commons/lang/StringUtils.java @@ -3420,15 +3420,15 @@ public class StringUtils { * StringUtils.replaceOnce("aba", "a", "z") = "zba" * * - * @see #replace(String text, String repl, String with, int max) + * @see #replace(String text, String searchString, String replacement, int max) * @param text text to search and replace in, may be null - * @param repl the String to search for, may be null - * @param with the String to replace with, may be null + * @param searchString the String to search for, may be null + * @param replacement the String to replace with, may be null * @return the text with any replacements processed, * null if null String input */ - public static String replaceOnce(String text, String repl, String with) { - return replace(text, repl, with, 1); + public static String replaceOnce(String text, String searchString, String replacement) { + return replace(text, searchString, replacement, 1); } /** @@ -3447,15 +3447,15 @@ public class StringUtils { * StringUtils.replace("aba", "a", "z") = "zbz" * * - * @see #replace(String text, String repl, String with, int max) + * @see #replace(String text, String searchString, String replacement, int max) * @param text text to search and replace in, may be null - * @param repl the String to search for, may be null - * @param with the String to replace with, may be null + * @param searchString the String to search for, may be null + * @param replacement the String to replace it with, may be null * @return the text with any replacements processed, * null if null String input */ - public static String replace(String text, String repl, String with) { - return replace(text, repl, with, -1); + public static String replace(String text, String searchString, String replacement) { + return replace(text, searchString, replacement, -1); } /** @@ -3480,33 +3480,33 @@ public class StringUtils { * * * @param text text to search and replace in, may be null - * @param repl the String to search for, may be null - * @param with the String to replace with, may be null + * @param searchString the String to search for, may be null + * @param replacement the String to replace it with, may be null * @param max maximum number of values to replace, or -1 if no maximum * @return the text with any replacements processed, * null if null String input */ - public static String replace(String text, String repl, String with, int max) { - if (isEmpty(text) || isEmpty(repl) || with == null || max == 0) { + public static String replace(String text, String searchString, String replacement, int max) { + if (isEmpty(text) || isEmpty(searchString) || replacement == null || max == 0) { return text; } int start = 0; - int end = text.indexOf(repl, start); + int end = text.indexOf(searchString, start); if (end == -1) { return text; } - int replLength = repl.length(); - int increase = with.length() - replLength; + int replLength = searchString.length(); + int increase = replacement.length() - replLength; increase = (increase < 0 ? 0 : increase); increase *= (max < 0 ? 16 : (max > 64 ? 64 : max)); StringBuffer buf = new StringBuffer(text.length() + increase); while (end != -1) { - buf.append(text.substring(start, end)).append(with); + buf.append(text.substring(start, end)).append(replacement); start = end + replLength; if (--max == 0) { break; } - end = text.indexOf(repl, start); + end = text.indexOf(searchString, start); } buf.append(text.substring(start)); return buf.toString(); @@ -3540,10 +3540,10 @@ public class StringUtils { * * @param text * text to search and replace in, no-op if null - * @param repl + * @param searchList * the Strings to search for, no-op if null - * @param with - * the Strings to replace with, no-op if null + * @param replacementList + * the Strings to replace them with, no-op if null * @return the text with any replacements processed, null if * null String input * @throws IndexOutOfBoundsException @@ -3551,8 +3551,8 @@ public class StringUtils { * and/or size 0) * @since 2.4 */ - public static String replaceEach(String text, String[] repl, String[] with) { - return replaceEach(text, repl, with, false, 0); + public static String replaceEach(String text, String[] searchList, String[] replacementList) { + return replaceEach(text, searchList, replacementList, false, 0); } /** @@ -3586,10 +3586,10 @@ public class StringUtils { * * @param text * text to search and replace in, no-op if null - * @param repl + * @param searchList * the Strings to search for, no-op if null - * @param with - * the Strings to replace with, no-op if null + * @param replacementList + * the Strings to replace them with, no-op if null * @return the text with any replacements processed, null if * null String input * @throws IllegalArgumentException @@ -3600,11 +3600,11 @@ public class StringUtils { * and/or size 0) * @since 2.4 */ - public static String replaceEachRepeatedly(String text, String[] repl, String[] with) { + public static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) { // timeToLive should be 0 if not used or nothing to replace, else it's // the length of the replace array - int timeToLive = repl == null ? 0 : repl.length; - return replaceEach(text, repl, with, true, timeToLive); + int timeToLive = searchList == null ? 0 : searchList.length; + return replaceEach(text, searchList, replacementList, true, timeToLive); } /** @@ -3636,10 +3636,12 @@ public class StringUtils { * * @param text * text to search and replace in, no-op if null - * @param repl + * @param searchList * the Strings to search for, no-op if null - * @param with - * the Strings to replace with, no-op if null + * @param replacementList + * the Strings to replace them with, no-op if null + * @param repeat if true, then replace repeatedly + * until there are no more possible replacements or timeToLive < 0 * @param timeToLive * if less than 0 then there is a circular reference and endless * loop @@ -3653,12 +3655,12 @@ public class StringUtils { * and/or size 0) * @since 2.4 */ - private static String replaceEach(String text, String[] repl, String[] with, boolean repeat, int timeToLive) { + private static String replaceEach(String text, String[] searchList, String[] replacementList, boolean repeat, int timeToLive) { // mchyzer Performance note: This creates very few new objects (one major goal) // let me know if there are performance requests, we can create a harness to measure - if (text == null || text.length() == 0 || repl == null || repl.length == 0 || with == null || with.length == 0) { + if (text == null || text.length() == 0 || searchList == null || searchList.length == 0 || replacementList == null || replacementList.length == 0) { return text; } @@ -3667,19 +3669,19 @@ public class StringUtils { throw new IllegalStateException("TimeToLive of " + timeToLive + " is less than 0: " + text); } - int replLength = repl.length; - int withLength = with.length; + int searchLength = searchList.length; + int replacementLength = replacementList.length; // make sure lengths are ok, these need to be equal - if (replLength != withLength) { + if (searchLength != replacementLength) { throw new IllegalArgumentException("Search and Replace array lengths don't match: " - + replLength + + searchLength + " vs " - + withLength); + + replacementLength); } // keep track of which still have matches - boolean[] noMoreMatchesForReplIndex = new boolean[replLength]; + boolean[] noMoreMatchesForReplIndex = new boolean[searchLength]; // index on index that the match was found int textIndex = -1; @@ -3688,11 +3690,11 @@ public class StringUtils { // index of replace array that will replace the search string found // NOTE: logic duplicated below START - for (int i = 0; i < replLength; i++) { - if (noMoreMatchesForReplIndex[i] || repl[i] == null || repl[i].length() == 0 || with[i] == null) { + for (int i = 0; i < searchLength; i++) { + if (noMoreMatchesForReplIndex[i] || searchList[i] == null || searchList[i].length() == 0 || replacementList[i] == null) { continue; } - tempIndex = text.indexOf(repl[i]); + tempIndex = text.indexOf(searchList[i]); // see if we need to keep searching for this if (tempIndex == -1) { @@ -3717,8 +3719,8 @@ public class StringUtils { int increase = 0; // count the replacement text elements that are larger than their corresponding text being replaced - for (int i = 0; i < repl.length; i++) { - int greater = with[i].length() - repl[i].length(); + for (int i = 0; i < searchList.length; i++) { + int greater = replacementList[i].length() - searchList[i].length(); if (greater > 0) { increase += 3 * greater; // assume 3 matches } @@ -3733,20 +3735,20 @@ public class StringUtils { for (int i = start; i < textIndex; i++) { buf.append(text.charAt(i)); } - buf.append(with[replaceIndex]); + buf.append(replacementList[replaceIndex]); - start = textIndex + repl[replaceIndex].length(); + start = textIndex + searchList[replaceIndex].length(); textIndex = -1; replaceIndex = -1; tempIndex = -1; // find the next earliest match // NOTE: logic mostly duplicated above START - for (int i = 0; i < replLength; i++) { - if (noMoreMatchesForReplIndex[i] || repl[i] == null || repl[i].length() == 0 || with[i] == null) { + for (int i = 0; i < searchLength; i++) { + if (noMoreMatchesForReplIndex[i] || searchList[i] == null || searchList[i].length() == 0 || replacementList[i] == null) { continue; } - tempIndex = text.indexOf(repl[i], start); + tempIndex = text.indexOf(searchList[i], start); // see if we need to keep searching for this if (tempIndex == -1) { @@ -3770,7 +3772,7 @@ public class StringUtils { return result; } - return replaceEach(result, repl, with, repeat, timeToLive - 1); + return replaceEach(result, searchList, replacementList, repeat, timeToLive - 1); } // Replace, character based