View Javadoc
1   /* ====================================================================
2    * The Apache Software License, Version 1.1
3    *
4    * Copyright (c) 2002 The Apache Software Foundation.  All rights
5    * reserved.
6    *
7    * Redistribution and use in source and binary forms, with or without
8    * modification, are permitted provided that the following conditions
9    * are met:
10   *
11   * 1. Redistributions of source code must retain the above copyright
12   *    notice, this list of conditions and the following disclaimer.
13   *
14   * 2. Redistributions in binary form must reproduce the above copyright
15   *    notice, this list of conditions and the following disclaimer in
16   *    the documentation and/or other materials provided with the
17   *    distribution.
18   *
19   * 3. The end-user documentation included with the redistribution, if
20   *    any, must include the following acknowlegement:
21   *       "This product includes software developed by the
22   *        Apache Software Foundation (http://www.codehaus.org/)."
23   *    Alternately, this acknowlegement may appear in the software itself,
24   *    if and wherever such third-party acknowlegements normally appear.
25   *
26   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
27   *    Foundation" must not be used to endorse or promote products derived
28   *    from this software without prior written permission. For written
29   *    permission, please contact codehaus@codehaus.org.
30   *
31   * 5. Products derived from this software may not be called "Apache"
32   *    nor may "Apache" appear in their names without prior written
33   *    permission of the Apache Software Foundation.
34   *
35   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46   * SUCH DAMAGE.
47   * ====================================================================
48   *
49   * This software consists of voluntary contributions made by many
50   * individuals on behalf of the Apache Software Foundation.  For more
51   * information on the Apache Software Foundation, please see
52   * <http://www.codehaus.org/>.
53   */
54  package org.codehaus.plexus.interpolation.util;
55  
56  /**
57   * Code here was swiped from plexus-utils' StringUtils class, so
58   * plexus-interpolation could be completely self-contained.
59   *
60   * @author jdcasey
61   */
62  public class StringUtils
63  {
64  
65      /**
66       * <p>Replace all occurrences of a String within another String.</p>
67       *
68       * <p>A <code>null</code> reference passed to this method is a no-op.</p>
69       *
70       * @see #replace(String text, String repl, String with, int max)
71       * @param text text to search and replace in
72       * @param repl String to search for
73       * @param with String to replace with
74       * @return the text with any replacements processed
75       */
76      public static String replace( String text, String repl, String with )
77      {
78          return replace( text, repl, with, -1 );
79      }
80  
81      /**
82       * <p>Replace a String with another String inside a larger String,
83       * for the first <code>max</code> values of the search String.</p>
84       *
85       * <p>A <code>null</code> reference passed to this method is a no-op.</p>
86       *
87       * @param text text to search and replace in
88       * @param repl String to search for
89       * @param with String to replace with
90       * @param max maximum number of values to replace, or <code>-1</code> if no maximum
91       * @return the text with any replacements processed
92       */
93      public static String replace( String text, String repl, String with, int max )
94      {
95          if ( ( text == null ) || ( repl == null ) || ( with == null ) || ( repl.length() == 0 ) )
96          {
97              return text;
98          }
99  
100         StringBuilder buf = new StringBuilder( text.length() );
101         int start = 0, end;
102         while ( ( end = text.indexOf( repl, start ) ) != -1 )
103         {
104             buf.append( text, start, end ).append( with );
105             start = end + repl.length();
106 
107             if ( --max == 0 )
108             {
109                 break;
110             }
111         }
112         buf.append( text, start, text.length());
113         return buf.toString();
114     }
115 
116     public static String capitalizeFirstLetter( String data )
117     {
118         char firstChar = data.charAt( 0 );
119         char titleCase = Character.toTitleCase( firstChar );
120         if (firstChar == titleCase)
121         {
122             return data;
123         }
124         StringBuilder result = new StringBuilder( data.length() );
125         result.append( titleCase );
126         result.append(  data, 1, data.length() );
127         return result.toString();
128     }
129 
130 }