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 * <p>Replace all occurrences of a String within another String.</p> 66 * 67 * <p>A <code>null</code> reference passed to this method is a no-op.</p> 68 * 69 * @see #replace(String text, String repl, String with, int max) 70 * @param text text to search and replace in 71 * @param repl String to search for 72 * @param with String to replace with 73 * @return the text with any replacements processed 74 */ 75 public static String replace(String text, String repl, String with) { 76 return replace(text, repl, with, -1); 77 } 78 79 /** 80 * <p>Replace a String with another String inside a larger String, 81 * for the first <code>max</code> values of the search String.</p> 82 * 83 * <p>A <code>null</code> reference passed to this method is a no-op.</p> 84 * 85 * @param text text to search and replace in 86 * @param repl String to search for 87 * @param with String to replace with 88 * @param max maximum number of values to replace, or <code>-1</code> if no maximum 89 * @return the text with any replacements processed 90 */ 91 public static String replace(String text, String repl, String with, int max) { 92 if ((text == null) || (repl == null) || (with == null) || (repl.length() == 0)) { 93 return text; 94 } 95 96 StringBuilder buf = new StringBuilder(text.length()); 97 int start = 0, end; 98 while ((end = text.indexOf(repl, start)) != -1) { 99 buf.append(text, start, end).append(with); 100 start = end + repl.length(); 101 102 if (--max == 0) { 103 break; 104 } 105 } 106 buf.append(text, start, text.length()); 107 return buf.toString(); 108 } 109 110 public static String capitalizeFirstLetter(String data) { 111 char firstChar = data.charAt(0); 112 char titleCase = Character.toTitleCase(firstChar); 113 if (firstChar == titleCase) { 114 return data; 115 } 116 StringBuilder result = new StringBuilder(data.length()); 117 result.append(titleCase); 118 result.append(data, 1, data.length()); 119 return result.toString(); 120 } 121 }