2 *******************************************************************************
\r
3 * Copyright (C) 2009, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.impl.locale;
\r
9 public final class AsciiUtil {
\r
10 public static boolean caseIgnoreMatch(String s1, String s2) {
\r
14 int len = s1.length();
\r
15 if (len != s2.length()) {
\r
20 char c1 = s1.charAt(i);
\r
21 char c2 = s2.charAt(i);
\r
22 if (c1 != c2 && toLower(c1) != toLower(c2)) {
\r
30 public static int caseIgnoreCompare(String s1, String s2) {
\r
34 return AsciiUtil.toLowerString(s1).compareTo(AsciiUtil.toLowerString(s2));
\r
38 public static char toUpper(char c) {
\r
39 if (c >= 'a' && c <= 'z') {
\r
45 public static char toLower(char c) {
\r
46 if (c >= 'A' && c <= 'Z') {
\r
52 public static String toLowerString(String s) {
\r
54 for (; idx < s.length(); idx++) {
\r
55 char c = s.charAt(idx);
\r
56 if (c >= 'A' && c <= 'Z') {
\r
60 if (idx == s.length()) {
\r
63 StringBuilder buf = new StringBuilder(s.substring(0, idx));
\r
64 for (; idx < s.length(); idx++) {
\r
65 buf.append(toLower(s.charAt(idx)));
\r
67 return buf.toString();
\r
70 public static String toUpperString(String s) {
\r
72 for (; idx < s.length(); idx++) {
\r
73 char c = s.charAt(idx);
\r
74 if (c >= 'a' && c <= 'z') {
\r
78 if (idx == s.length()) {
\r
81 StringBuilder buf = new StringBuilder(s.substring(0, idx));
\r
82 for (; idx < s.length(); idx++) {
\r
83 buf.append(toUpper(s.charAt(idx)));
\r
85 return buf.toString();
\r
88 public static String toTitleString(String s) {
\r
89 if (s.length() == 0) {
\r
93 char c = s.charAt(idx);
\r
94 if (!(c >= 'a' && c <= 'z')) {
\r
95 for (idx = 1; idx < s.length(); idx++) {
\r
96 if (c >= 'A' && c <= 'Z') {
\r
101 if (idx == s.length()) {
\r
104 StringBuilder buf = new StringBuilder(s.substring(0, idx));
\r
106 buf.append(toUpper(s.charAt(idx)));
\r
109 for (; idx < s.length(); idx++) {
\r
110 buf.append(toLower(s.charAt(idx)));
\r
112 return buf.toString();
\r
115 public static boolean isAlpha(char c) {
\r
116 return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
\r
119 public static boolean isAlphaString(String s) {
\r
121 for (int i = 0; i < s.length(); i++) {
\r
122 if (!isAlpha(s.charAt(i))) {
\r
130 public static boolean isNumeric(char c) {
\r
131 return (c >= '0' && c <= '9');
\r
134 public static boolean isNumericString(String s) {
\r
136 for (int i = 0; i < s.length(); i++) {
\r
137 if (!isNumeric(s.charAt(i))) {
\r
145 public static boolean isAlphaNumeric(char c) {
\r
146 return isAlpha(c) || isNumeric(c);
\r
149 public static boolean isAlphaNumericString(String s) {
\r
151 for (int i = 0; i < s.length(); i++) {
\r
152 if (!isAlphaNumeric(s.charAt(i))) {
\r
160 public static class CaseInsensitiveKey {
\r
161 private String _key;
\r
164 public CaseInsensitiveKey(String key) {
\r
166 _hash = AsciiUtil.toLowerString(key).hashCode();
\r
169 public boolean equals(Object o) {
\r
170 if (o instanceof CaseInsensitiveKey) {
\r
171 return AsciiUtil.caseIgnoreMatch(_key, ((CaseInsensitiveKey)o)._key);
\r
176 public int hashCode() {
\r