Mega Code Archive

 
Categories / Java / Data Type
 

Replaces all instances of oldString with newString in string

/**  * $Revision: 10205 $  * $Date: 2008-04-11 15:48:27 -0700 (Fri, 11 Apr 2008) $  *  * Copyright (C) 2004-2008 Jive Software. All rights reserved.  *  * This software is published under the terms of the GNU Public License (GPL),  * a copy of which is included in this distribution, or a commercial license  * agreement with Jive.  */ import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.BreakIterator; import java.util.*; import java.util.concurrent.ConcurrentHashMap; /**  * Utility class to peform common String manipulation algorithms.  */ public class StringUtils {     // Constants used by escapeHTMLTags     private static final char[] QUOTE_ENCODE = """.toCharArray();     private static final char[] AMP_ENCODE = "&".toCharArray();     private static final char[] LT_ENCODE = "<".toCharArray();     private static final char[] GT_ENCODE = ">".toCharArray();     private StringUtils() {         // Not instantiable.     }     /**      * Replaces all instances of oldString with newString in string.      *      * @param string the String to search to perform replacements on.      * @param oldString the String that should be replaced by newString.      * @param newString the String that will replace all instances of oldString.      * @return a String will all instances of oldString replaced by newString.      */     public static String replace(String string, String oldString, String newString) {         if (string == null) {             return null;         }         int i = 0;         // Make sure that oldString appears at least once before doing any processing.         if ((i = string.indexOf(oldString, i)) >= 0) {             // Use char []'s, as they are more efficient to deal with.             char[] string2 = string.toCharArray();             char[] newString2 = newString.toCharArray();             int oLength = oldString.length();             StringBuilder buf = new StringBuilder(string2.length);             buf.append(string2, 0, i).append(newString2);             i += oLength;             int j = i;             // Replace all remaining instances of oldString with newString.             while ((i = string.indexOf(oldString, i)) > 0) {                 buf.append(string2, j, i - j).append(newString2);                 i += oLength;                 j = i;             }             buf.append(string2, j, string2.length - j);             return buf.toString();         }         return string;     }     /**      * Replaces all instances of oldString with newString in line with the      * added feature that matches of newString in oldString ignore case.      *      * @param line      the String to search to perform replacements on      * @param oldString the String that should be replaced by newString      * @param newString the String that will replace all instances of oldString      * @return a String will all instances of oldString replaced by newString      */     public static String replaceIgnoreCase(String line, String oldString,                                                  String newString) {         if (line == null) {             return null;         }         String lcLine = line.toLowerCase();         String lcOldString = oldString.toLowerCase();         int i = 0;         if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {             char[] line2 = line.toCharArray();             char[] newString2 = newString.toCharArray();             int oLength = oldString.length();             StringBuilder buf = new StringBuilder(line2.length);             buf.append(line2, 0, i).append(newString2);             i += oLength;             int j = i;             while ((i = lcLine.indexOf(lcOldString, i)) > 0) {                 buf.append(line2, j, i - j).append(newString2);                 i += oLength;                 j = i;             }             buf.append(line2, j, line2.length - j);             return buf.toString();         }         return line;     }     /**      * Replaces all instances of oldString with newString in line with the      * added feature that matches of newString in oldString ignore case.      * The count paramater is set to the number of replaces performed.      *      * @param line      the String to search to perform replacements on      * @param oldString the String that should be replaced by newString      * @param newString the String that will replace all instances of oldString      * @param count     a value that will be updated with the number of replaces      *                  performed.      * @return a String will all instances of oldString replaced by newString      */     public static String replaceIgnoreCase(String line, String oldString,             String newString, int[] count)     {         if (line == null) {             return null;         }         String lcLine = line.toLowerCase();         String lcOldString = oldString.toLowerCase();         int i = 0;         if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {             int counter = 1;             char[] line2 = line.toCharArray();             char[] newString2 = newString.toCharArray();             int oLength = oldString.length();             StringBuilder buf = new StringBuilder(line2.length);             buf.append(line2, 0, i).append(newString2);             i += oLength;             int j = i;             while ((i = lcLine.indexOf(lcOldString, i)) > 0) {                 counter++;                 buf.append(line2, j, i - j).append(newString2);                 i += oLength;                 j = i;             }             buf.append(line2, j, line2.length - j);             count[0] = counter;             return buf.toString();         }         return line;     }     /**      * Replaces all instances of oldString with newString in line.      * The count Integer is updated with number of replaces.      *      * @param line the String to search to perform replacements on.      * @param oldString the String that should be replaced by newString.      * @param newString the String that will replace all instances of oldString.      * @return a String will all instances of oldString replaced by newString.      */     public static String replace(String line, String oldString,             String newString, int[] count)     {         if (line == null) {             return null;         }         int i = 0;         if ((i = line.indexOf(oldString, i)) >= 0) {             int counter = 1;             char[] line2 = line.toCharArray();             char[] newString2 = newString.toCharArray();             int oLength = oldString.length();             StringBuilder buf = new StringBuilder(line2.length);             buf.append(line2, 0, i).append(newString2);             i += oLength;             int j = i;             while ((i = line.indexOf(oldString, i)) > 0) {                 counter++;                 buf.append(line2, j, i - j).append(newString2);                 i += oLength;                 j = i;             }             buf.append(line2, j, line2.length - j);             count[0] = counter;             return buf.toString();         }         return line;     } }