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