]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / core / src / com / ibm / icu / impl / locale / AsciiUtil.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2009, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.impl.locale;\r
8 \r
9 public final class AsciiUtil {\r
10     public static boolean caseIgnoreMatch(String s1, String s2) {\r
11         if (s1 == s2) {\r
12             return true;\r
13         }\r
14         int len = s1.length();\r
15         if (len != s2.length()) {\r
16             return false;\r
17         }\r
18         int i = 0;\r
19         while (i < len) {\r
20             char c1 = s1.charAt(i);\r
21             char c2 = s2.charAt(i);\r
22             if (c1 != c2 && toLower(c1) != toLower(c2)) {\r
23                 break;\r
24             }\r
25             i++;\r
26         }\r
27         return (i == len);\r
28     }\r
29 \r
30     public static int caseIgnoreCompare(String s1, String s2) {\r
31         if (s1 == s2) {\r
32             return 0;\r
33         }\r
34         return AsciiUtil.toLowerString(s1).compareTo(AsciiUtil.toLowerString(s2));\r
35     }\r
36 \r
37 \r
38     public static char toUpper(char c) {\r
39         if (c >= 'a' && c <= 'z') {\r
40             c -= 0x20;\r
41         }\r
42         return c;\r
43     }\r
44 \r
45     public static char toLower(char c) {\r
46         if (c >= 'A' && c <= 'Z') {\r
47             c += 0x20;\r
48         }\r
49         return c;\r
50     }\r
51 \r
52     public static String toLowerString(String s) {\r
53         int idx = 0;\r
54         for (; idx < s.length(); idx++) {\r
55             char c = s.charAt(idx);\r
56             if (c >= 'A' && c <= 'Z') {\r
57                 break;\r
58             }\r
59         }\r
60         if (idx == s.length()) {\r
61             return s;\r
62         }\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
66         }\r
67         return buf.toString();\r
68     }\r
69 \r
70     public static String toUpperString(String s) {\r
71         int idx = 0;\r
72         for (; idx < s.length(); idx++) {\r
73             char c = s.charAt(idx);\r
74             if (c >= 'a' && c <= 'z') {\r
75                 break;\r
76             }\r
77         }\r
78         if (idx == s.length()) {\r
79             return s;\r
80         }\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
84         }\r
85         return buf.toString();\r
86     }\r
87 \r
88     public static String toTitleString(String s) {\r
89         if (s.length() == 0) {\r
90             return s;\r
91         }\r
92         int idx = 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
97                     break;\r
98                 }\r
99             }\r
100         }\r
101         if (idx == s.length()) {\r
102             return s;\r
103         }\r
104         StringBuilder buf = new StringBuilder(s.substring(0, idx));\r
105         if (idx == 0) {\r
106             buf.append(toUpper(s.charAt(idx)));\r
107             idx++;\r
108         }\r
109         for (; idx < s.length(); idx++) {\r
110             buf.append(toLower(s.charAt(idx)));\r
111         }\r
112         return buf.toString();\r
113     }\r
114 \r
115     public static boolean isAlpha(char c) {\r
116         return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');\r
117     }\r
118 \r
119     public static boolean isAlphaString(String s) {\r
120         boolean b = true;\r
121         for (int i = 0; i < s.length(); i++) {\r
122             if (!isAlpha(s.charAt(i))) {\r
123                 b = false;\r
124                 break;\r
125             }\r
126         }\r
127         return b;\r
128     }\r
129 \r
130     public static boolean isNumeric(char c) {\r
131         return (c >= '0' && c <= '9');\r
132     }\r
133 \r
134     public static boolean isNumericString(String s) {\r
135         boolean b = true;\r
136         for (int i = 0; i < s.length(); i++) {\r
137             if (!isNumeric(s.charAt(i))) {\r
138                 b = false;\r
139                 break;\r
140             }\r
141         }\r
142         return b;\r
143     }\r
144 \r
145     public static boolean isAlphaNumeric(char c) {\r
146         return isAlpha(c) || isNumeric(c);\r
147     }\r
148 \r
149     public static boolean isAlphaNumericString(String s) {\r
150         boolean b = true;\r
151         for (int i = 0; i < s.length(); i++) {\r
152             if (!isAlphaNumeric(s.charAt(i))) {\r
153                 b = false;\r
154                 break;\r
155             }\r
156         }\r
157         return b;\r
158     }\r
159 \r
160     public static class CaseInsensitiveKey {\r
161         private String _key;\r
162         private int _hash;\r
163 \r
164         public CaseInsensitiveKey(String key) {\r
165             _key = key;\r
166             _hash = AsciiUtil.toLowerString(key).hashCode();\r
167         }\r
168 \r
169         public boolean equals(Object o) {\r
170             if (o instanceof CaseInsensitiveKey) {\r
171                 return AsciiUtil.caseIgnoreMatch(_key, ((CaseInsensitiveKey)o)._key);\r
172             }\r
173             return false;\r
174         }\r
175 \r
176         public int hashCode() {\r
177             return _hash;\r
178         }\r
179     }\r
180 }\r