ggregory    2003/12/14 17:51:36

  Modified:    lang/src/java/org/apache/commons/lang StringUtils.java
  Log:
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25454
  StringUtils.replaceChars(String,String,String).
  
  Revision  Changes    Path
  1.121     +14 -28    
jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java
  
  Index: StringUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java,v
  retrieving revision 1.120
  retrieving revision 1.121
  diff -u -r1.120 -r1.121
  --- StringUtils.java  29 Nov 2003 13:24:33 -0000      1.120
  +++ StringUtils.java  15 Dec 2003 01:51:36 -0000      1.121
  @@ -2699,39 +2699,25 @@
        * @since 2.0
        */
       public static String replaceChars(String str, String searchChars, String 
replaceChars) {
  -        if (str == null || str.length() == 0 || searchChars == null || 
searchChars.length() == 0) {
  +        if (StringUtils.isEmpty(str) || StringUtils.isEmpty(searchChars)) {
               return str;
           }
  -        char[] chars = str.toCharArray();
  -        int len = chars.length;
  -        boolean modified = false;
  -        for (int i = 0, isize = searchChars.length(); i < isize; i++) {
  -            char searchChar = searchChars.charAt(i);
  -            if (replaceChars == null || i >= replaceChars.length()) {
  -                // delete
  -                int pos = 0;
  -                for (int j = 0; j < len; j++) {
  -                    if (chars[j] != searchChar) {
  -                        chars[pos++] = chars[j];
  -                    } else {
  -                        modified = true;
  -                    }
  +        if (replaceChars == null) {
  +            replaceChars = "";
  +        }
  +        StringBuffer buffer = new StringBuffer(str.length());
  +        for (int i = 0; i < str.length(); i++) {
  +            char ch = str.charAt(i);
  +            int index = searchChars.indexOf(ch);
  +            if (index >= 0) {
  +                if (index < replaceChars.length()) {
  +                    buffer.append(replaceChars.charAt(index));
                   }
  -                len = pos;
               } else {
  -                // replace
  -                for (int j = 0; j < len; j++) {
  -                    if (chars[j] == searchChar) {
  -                        chars[j] = replaceChars.charAt(i);
  -                        modified = true;
  -                    }
  -                }
  +                buffer.append(ch);
               }
           }
  -        if (modified == false) {
  -            return str;
  -        }
  -        return new String(chars, 0, len);
  +        return buffer.toString();
       }
   
       // Overlay
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to