santiagopg    02/04/30 10:16:51

  Modified:    java/src/org/apache/xalan/xsltc/compiler/util Util.java
  Log:
  Fixed a bug in replace() by writting a new (and more efficient) version.
  
  Revision  Changes    Path
  1.8       +20 -21    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/Util.java
  
  Index: Util.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/Util.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Util.java 25 Apr 2002 20:45:27 -0000      1.7
  +++ Util.java 30 Apr 2002 17:16:51 -0000      1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Util.java,v 1.7 2002/04/25 20:45:27 santiagopg Exp $
  + * @(#)$Id: Util.java,v 1.8 2002/04/30 17:16:51 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -155,36 +155,35 @@
       /**
        * Replace a certain character in a string with a new substring.
        */
  -    public static String replace(String base, char c, String str) {
  -     final int len = base.length() - 1;
  -     int pos;
  -     while ((pos = base.indexOf(c)) > -1) {
  -         if (pos == 0) {
  -             final String after = base.substring(1);
  -             base = str + after;
  -         }
  -         else if (pos == len) {
  -             final String before = base.substring(0, pos);
  -             base = before + str;
  +    public static String replace(String base, char ch, String str) {
  +     return (base.indexOf(ch) < 0) ? base : 
  +         replace(base, String.valueOf(ch), new String[] { str });
  +    }
  +
  +    public static String replace(String base, String delim, String[] str) {
  +     final int len = base.length();
  +     final StringBuffer result = new StringBuffer();
  +
  +     for (int i = 0; i < len; i++) {
  +         final char ch = base.charAt(i);
  +         final int k = delim.indexOf(ch);
  +
  +         if (k >= 0) {
  +             result.append(str[k]);
            }
            else {
  -             final String before = base.substring(0, pos);
  -             final String after = base.substring(pos+1);
  -             base = before + str + after;
  +             result.append(ch);
            }
        }
  -     return base;
  +     return result.toString();
       }
   
       /**
        * Replace occurances of '.', '-', '/' and ':'
        */
       public static String escape(String input) {
  -     input = replace(input, '.', "$dot$");
  -     input = replace(input, '-', "$dash$");
  -     input = replace(input, '/', "$slash$");
  -     input = replace(input, ':', "$colon$");
  -     return input;
  +     return replace(input, ".-/:", 
  +         new String[] { "$dot$", "$dash$", "$slash$", "$colon$" });
       }
   
   }
  
  
  

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

Reply via email to