View Javadoc
1 /* ==================================================================== 2 * License: 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in 13 * the documentation and/or other materials provided with the 14 * distribution. 15 * 16 * 3. The end-user documentation included with the redistribution, 17 * if any, must include the following acknowledgment: 18 * "This product includes software developed by 19 * Robert Half International (http://www.rhi.com/)." 20 * Alternately, this acknowledgment may appear in the software itself, 21 * if and wherever such third-party acknowledgments normally appear. 22 * 23 * 4. The names "Parc", "RHI", and "Robert Half International" must 24 * not be used to endorse or promote products derived from this 25 * software without prior written permission. For written 26 * permission, please contact pete.mckinstry@rhi.com. 27 * 28 * 5. Products derived from this software may not be called "PARC", 29 * nor may "PARC" appear in their name, without prior written 30 * permission of Robert Half International. 31 * 32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 43 * SUCH DAMAGE. 44 * ==================================================================== 45 * 46 */ 47 package com.rhi.architecture.lang; 48 49 import java.util.StringTokenizer; 50 51 /*** 52 * StringUtils 53 * 54 * @author Pete McKinstry 55 * @version 1.0 56 */ 57 public class StringUtils { 58 59 /*** 60 * Constructor for StringUtils. 61 */ 62 public StringUtils() { 63 super(); 64 } 65 66 /*** 67 * This method runs about 20 times faster than java.lang.String.toLowerCase 68 * (and doesn't waste any storage when the result is equal to the input). 69 * Warning: Don't use this method when your default locale is Turkey. 70 * java.lang.String.toLowerCase is slow because (a) it uses a StringBuffer 71 * (which has synchronized methods), (b) it initializes the StringBuffer to 72 * the default size, and (c) it gets the default locale every time to test 73 * for name equal to "tr". 74 * @author Peter Norvig 75 */ 76 public static String toLowerCase(String str) { 77 int len = str.length(); 78 int different = -1; 79 // See if there is a char that is different in lowercase 80 for (int i = len - 1; i >= 0; i--) { 81 char ch = str.charAt(i); 82 if (Character.toLowerCase(ch) != ch) { 83 different = i; 84 break; 85 } 86 } 87 // If the string has no different char, then return the string as is, 88 // otherwise create a lowercase version in a char array. 89 if (different == -1) 90 return str; 91 else { 92 char[] chars = new char[len]; 93 str.getChars(0, len, chars, 0); 94 // (Note we start at different, not at len.) 95 for (int j = different; j >= 0; j--) { 96 chars[j] = Character.toLowerCase(chars[j]); 97 } 98 return new String(chars); 99 } 100 } 101 102 /*** 103 * This method runs about 20 times faster than java.lang.String.toUpperCase 104 * (and doesn't waste any storage when the result is equal to the input). 105 * Warning: Don't use this method when your default locale is Turkey. 106 * java.lang.String.toUpperCase is slow because (a) it uses a StringBuffer 107 * (which has synchronized methods), (b) it initializes the StringBuffer 108 * to the default size, and (c) it gets the default locale every time to 109 * test for name equal to "tr". 110 */ 111 public static String toUpperCase(String str) { 112 int len = str.length(); 113 int different = -1; 114 // See if there is a char that is different in uppercase 115 for (int i = len - 1; i >= 0; i--) { 116 char ch = str.charAt(i); 117 if (Character.toUpperCase(ch) != ch) { 118 different = i; 119 break; 120 } 121 } 122 // If the string has no different char, then return the string as is, 123 // otherwise create a lowercase version in a char array. 124 if (different == -1) 125 return str; 126 else { 127 char[] chars = new char[len]; 128 str.getChars(0, len, chars, 0); 129 // (Note we start at different, not at len.) 130 for (int j = different; j >= 0; j--) { 131 chars[j] = Character.toUpperCase(chars[j]); 132 } 133 return new String(chars); 134 } 135 } 136 137 /*** 138 * Uses comma as the default delimiter, calls parseString( src, "," ) 139 * internally. 140 * @see parseString( String, String ) 141 * @param src 142 * @return 143 */ 144 public static String[] parseString( String src ) { 145 return parseString( src, "," ); 146 } 147 148 /*** 149 * Parses given string into an array of strings based on a delimiter. 150 * Returns an empty array of the input string is "". 151 * 152 * @param src 153 * @param delim 154 * @return 155 */ 156 public static String[] parseString( String src , String delim ) { 157 StringTokenizer stz = new StringTokenizer( src , delim ); 158 int tokenCount = stz.countTokens(); 159 160 String parts[] = new String[ tokenCount ]; 161 for( int i = 0; i < tokenCount ; i++ ) { 162 parts[i] = stz.nextToken(); 163 } 164 return parts; 165 } 166 167 }

This page was automatically generated by Maven