2 // This software is now distributed according to
\r
3 // the Lesser Gnu Public License. Please see
\r
4 // http://www.gnu.org/copyleft/lesser.txt for
\r
6 // -- Happy Computing!
\r
8 package com.stevesoft.pat;
\r
10 /** Encapsulates the Unicode definitions of Upper,
\r
11 Lower, and Title case as defined by <a href="http://www.unicode.org">
\r
14 The performance of the methods found in String
\r
15 and Character is better, but these methods work
\r
16 both in java 1.0 and 1.1. If it is desirable,
\r
17 either to gain a slight performance increase or
\r
18 to accomodate application specific modifications
\r
19 to the definitions of upper, lower, and title case
\r
20 then it should be a straightforward task to substitute
\r
21 your own methods for these.
\r
23 final public class CaseMgr
\r
25 final static boolean java_1_0 = false;
\r
26 /** Convert a character to upper case .*/
\r
27 public static char toUpperCase(char c)
\r
2054 return (char) ret;
\r
2056 return Character.toUpperCase(c);
\r
2059 /** Convert a character to lower case. */
\r
2060 public static char toLowerCase(char c)
\r
2064 int ret = (int) c;
\r
4180 return (char) ret;
\r
4182 return Character.toLowerCase(c);
\r
4185 /** Convert a String to title case. */
\r
4186 public static String toTitleCase(String s)
\r
4188 StringBuffer sb = new StringBuffer();
\r
4189 for (int i = 0; i < s.length(); i++)
\r
4191 sb.append(CaseMgr.toTitleCase(s.charAt(i)));
\r
4193 return sb.toString();
\r
4196 /** Convert a String to upper case. */
\r
4197 public static String toUpperCase(String s)
\r
4199 StringBuffer sb = new StringBuffer();
\r
4200 for (int i = 0; i < s.length(); i++)
\r
4202 sb.append(CaseMgr.toUpperCase(s.charAt(i)));
\r
4204 return sb.toString();
\r
4207 /** Convert a String to lower case. */
\r
4208 public static String toLowerCase(String s)
\r
4210 StringBuffer sb = new StringBuffer();
\r
4211 for (int i = 0; i < s.length(); i++)
\r
4213 sb.append(CaseMgr.toLowerCase(s.charAt(i)));
\r
4215 return sb.toString();
\r
4218 /** Convert a character to title case.*/
\r
4219 public static char toTitleCase(char c)
\r
4223 int ret = (int) toUpperCase(c);
\r
4263 return (char) ret;
\r
4265 return Character.toTitleCase(c);
\r
4268 /** Duplicates the regionMatches routine of String -- but
\r
4269 makes use of the definitions of upper, lower, and title
\r
4270 case in this class when ignoreCase is set. */
\r
4271 public static boolean regionMatches(StringLike s1,
\r
4272 boolean ign, int i1, StringLike s2,
\r
4275 int itot = i2 + i3;
\r
4276 if (itot > s2.length() || i1 + i3 > s1.length())
\r
4282 for (int i = i2; i < itot; i++)
\r
4284 if (s2.charAt(i) != s1.charAt(i1++))
\r
4292 for (int i = i2; i < itot; i++)
\r
4294 if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
\r
4303 /** Duplicates the regionMatches routine of String -- but
\r
4304 makes use of the definitions of upper, lower, and title
\r
4305 case in this class when ignoreCase is set. */
\r
4306 public static boolean regionMatches(String s1,
\r
4307 boolean ign, int i1, StringLike s2,
\r
4310 int itot = i2 + i3;
\r
4311 if (itot > s2.length() || i1 + i3 > s1.length())
\r
4317 for (int i = i2; i < itot; i++)
\r
4319 if (s2.charAt(i) != s1.charAt(i1++))
\r
4327 for (int i = i2; i < itot; i++)
\r
4329 if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
\r
4338 /** Duplicates the regionMatches routine of String -- but
\r
4339 makes use of the definitions of upper, lower, and title
\r
4340 case in this class when ignoreCase is set. */
\r
4341 public static boolean regionMatches(StringLike s1,
\r
4342 boolean ign, int i1, String s2, int i2,
\r
4345 int itot = i2 + i3;
\r
4346 if (itot > s2.length() || i1 + i3 > s1.length())
\r
4352 for (int i = i2; i < itot; i++)
\r
4354 if (s2.charAt(i) != s1.charAt(i1++))
\r
4362 for (int i = i2; i < itot; i++)
\r
4364 if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
\r
4373 /** Duplicates the regionMatches routine of String -- but
\r
4374 makes use of the definitions of upper, lower, and title
\r
4375 case in this class when ignoreCase is set. */
\r
4376 public static boolean regionMatches(String s1,
\r
4377 boolean ign, int i1, String s2, int i2,
\r
4380 int itot = i2 + i3;
\r
4381 if (itot > s2.length() || i1 + i3 > s1.length())
\r
4387 for (int i = i2; i < itot; i++)
\r
4389 if (s2.charAt(i) != s1.charAt(i1++))
\r
4397 for (int i = i2; i < itot; i++)
\r
4399 if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))
\r