There are multiple static “Is” methods on the Char structure that help determine a character’s category. All of these methods (except IsSurrogatePair) take a single character argument (or string and index) and return a boolean whether the character is in the corresponding category.
Char.Is Methods
These are the Char.Is methods:
IsControl Is a control character IsDigit Is a decimal, radix-10 digit IsHighSurrogate Is a high surrogate, such that the numeric value ranges from U+D800 through U+DBFF IsLetter Is an alphabetic letter IsLetterOrDigit Is an alphabetic letter or decimal digit IsLower Is a lowercase letter IsLowSurrogate Is a low surrogate, such that the numeric value ranges from U+DC00 through U+DFFF IsNumber Is any Unicode number character IsPunctuation Is a punctuation mark IsSeparator Is a separator character IsSurrogate Is a surrogate character, such that the numeric value ranges from U+D800 through U+DFFF IsSurrogatePair Whether two specified characters form a surrogate pair IsSymbol Is a symbol character IsUpper Is an uppercase letter IsWhiteSpace Is white space
Unicode Category
The UnicodeCategory defines the result of these methods. For example, the IsNumber method returns whether a character is a member of the DecimalDigitNumber, LetterNumber, or OtherNumbers Unicode categories. When you take into account the upper ASCII and Unicode characters, these methods can return true for more characters than you might expect. For example, IsDigit will return true not only for 0-9, but also for x0661, an Arabic digit.
Char.Is Results for ASCII Characters
The following table shows the result of each Char.Is method for the ASCII character set:
### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
0 YES no no no no no no no no no no no no no
1 YES no no no no no no no no no no no no no
2 YES no no no no no no no no no no no no no
3 YES no no no no no no no no no no no no no
4 YES no no no no no no no no no no no no no
5 YES no no no no no no no no no no no no no
6 YES no no no no no no no no no no no no no
7 YES no no no no no no no no no no no no no
8 YES no no no no no no no no no no no no no
9 YES no no no no no no no no no no no no YES### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
10 YES no no no no no no no no no no no no YES
11 YES no no no no no no no no no no no no YES
12 YES no no no no no no no no no no no no YES
13 YES no no no no no no no no no no no no YES
14 YES no no no no no no no no no no no no no
15 YES no no no no no no no no no no no no no
16 YES no no no no no no no no no no no no no
17 YES no no no no no no no no no no no no no
18 YES no no no no no no no no no no no no no
19 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
20 YES no no no no no no no no no no no no no
21 YES no no no no no no no no no no no no no
22 YES no no no no no no no no no no no no no
23 YES no no no no no no no no no no no no no
24 YES no no no no no no no no no no no no no
25 YES no no no no no no no no no no no no no
26 YES no no no no no no no no no no no no no
27 YES no no no no no no no no no no no no no
28 YES no no no no no no no no no no no no no
29 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
30 YES no no no no no no no no no no no no no
31 YES no no no no no no no no no no no no no
32 no no no no no no no no no YES no no no YES
33 ! no no no no no no no no YES no no no no no
34 ” no no no no no no no no YES no no no no no
35 # no no no no no no no no YES no no no no no
36 $ no no no no no no no no no no no YES no no
37 % no no no no no no no no YES no no no no no
38 & no no no no no no no no YES no no no no no
39 ‘ no no no no no no no no YES no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
40 ( no no no no no no no no YES no no no no no
41 ) no no no no no no no no YES no no no no no
42 * no no no no no no no no YES no no no no no
43 + no no no no no no no no no no no YES no no
44 , no no no no no no no no YES no no no no no
45 – no no no no no no no no YES no no no no no
46 . no no no no no no no no YES no no no no no
47 / no no no no no no no no YES no no no no no
48 0 no YES no no YES no no YES no no no no no no
49 1 no YES no no YES no no YES no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
50 2 no YES no no YES no no YES no no no no no no
51 3 no YES no no YES no no YES no no no no no no
52 4 no YES no no YES no no YES no no no no no no
53 5 no YES no no YES no no YES no no no no no no
54 6 no YES no no YES no no YES no no no no no no
55 7 no YES no no YES no no YES no no no no no no
56 8 no YES no no YES no no YES no no no no no no
57 9 no YES no no YES no no YES no no no no no no
58 : no no no no no no no no YES no no no no no
59 ; no no no no no no no no YES no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
60 < no no no no no no no no no no no YES no no
61 = no no no no no no no no no no no YES no no
62 > no no no no no no no no no no no YES no no
63 ? no no no no no no no no YES no no no no no
64 @ no no no no no no no no YES no no no no no
65 A no no no YES YES no no no no no no no YES no
66 B no no no YES YES no no no no no no no YES no
67 C no no no YES YES no no no no no no no YES no
68 D no no no YES YES no no no no no no no YES no
69 E no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
70 F no no no YES YES no no no no no no no YES no
71 G no no no YES YES no no no no no no no YES no
72 H no no no YES YES no no no no no no no YES no
73 I no no no YES YES no no no no no no no YES no
74 J no no no YES YES no no no no no no no YES no
75 K no no no YES YES no no no no no no no YES no
76 L no no no YES YES no no no no no no no YES no
77 M no no no YES YES no no no no no no no YES no
78 N no no no YES YES no no no no no no no YES no
79 O no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
80 P no no no YES YES no no no no no no no YES no
81 Q no no no YES YES no no no no no no no YES no
82 R no no no YES YES no no no no no no no YES no
83 S no no no YES YES no no no no no no no YES no
84 T no no no YES YES no no no no no no no YES no
85 U no no no YES YES no no no no no no no YES no
86 V no no no YES YES no no no no no no no YES no
87 W no no no YES YES no no no no no no no YES no
88 X no no no YES YES no no no no no no no YES no
89 Y no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
90 Z no no no YES YES no no no no no no no YES no
91 [ no no no no no no no no YES no no no no no
92 no no no no no no no no YES no no no no no
93 ] no no no no no no no no YES no no no no no
94 ^ no no no no no no no no no no no YES no no
95 _ no no no no no no no no YES no no no no no
96 ` no no no no no no no no no no no YES no no
97 a no no no YES YES YES no no no no no no no no
98 b no no no YES YES YES no no no no no no no no
99 c no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
100 d no no no YES YES YES no no no no no no no no
101 e no no no YES YES YES no no no no no no no no
102 f no no no YES YES YES no no no no no no no no
103 g no no no YES YES YES no no no no no no no no
104 h no no no YES YES YES no no no no no no no no
105 i no no no YES YES YES no no no no no no no no
106 j no no no YES YES YES no no no no no no no no
107 k no no no YES YES YES no no no no no no no no
108 l no no no YES YES YES no no no no no no no no
109 m no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
110 n no no no YES YES YES no no no no no no no no
111 o no no no YES YES YES no no no no no no no no
112 p no no no YES YES YES no no no no no no no no
113 q no no no YES YES YES no no no no no no no no
114 r no no no YES YES YES no no no no no no no no
115 s no no no YES YES YES no no no no no no no no
116 t no no no YES YES YES no no no no no no no no
117 u no no no YES YES YES no no no no no no no no
118 v no no no YES YES YES no no no no no no no no
119 w no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
120 x no no no YES YES YES no no no no no no no no
121 y no no no YES YES YES no no no no no no no no
122 z no no no YES YES YES no no no no no no no no
123 { no no no no no no no no YES no no no no no
124 | no no no no no no no no no no no YES no no
125 } no no no no no no no no YES no no no no no
126 ~ no no no no no no no no no no no YES no no
127 YES no no no no no no no no no no no no no
128 YES no no no no no no no no no no no no no
129 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
130 YES no no no no no no no no no no no no no
131 YES no no no no no no no no no no no no no
132 YES no no no no no no no no no no no no no
133 YES no no no no no no no no no no no no YES
134 YES no no no no no no no no no no no no no
135 YES no no no no no no no no no no no no no
136 YES no no no no no no no no no no no no no
137 YES no no no no no no no no no no no no no
138 YES no no no no no no no no no no no no no
139 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
140 YES no no no no no no no no no no no no no
141 YES no no no no no no no no no no no no no
142 YES no no no no no no no no no no no no no
143 YES no no no no no no no no no no no no no
144 YES no no no no no no no no no no no no no
145 YES no no no no no no no no no no no no no
146 YES no no no no no no no no no no no no no
147 YES no no no no no no no no no no no no no
148 YES no no no no no no no no no no no no no
149 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
150 YES no no no no no no no no no no no no no
151 YES no no no no no no no no no no no no no
152 YES no no no no no no no no no no no no no
153 YES no no no no no no no no no no no no no
154 YES no no no no no no no no no no no no no
155 YES no no no no no no no no no no no no no
156 YES no no no no no no no no no no no no no
157 YES no no no no no no no no no no no no no
158 YES no no no no no no no no no no no no no
159 YES no no no no no no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
160 no no no no no no no no no YES no no no YES
161 ¡ no no no no no no no no YES no no no no no
162 ¢ no no no no no no no no no no no YES no no
163 £ no no no no no no no no no no no YES no no
164 ☼ no no no no no no no no no no no YES no no
165 ¥ no no no no no no no no no no no YES no no
166 ▌ no no no no no no no no no no no YES no no
167 § no no no no no no no no no no no YES no no
168 ” no no no no no no no no no no no YES no no
169 c no no no no no no no no no no no YES no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
170 ª no no no YES YES YES no no no no no no no no
171 « no no no no no no no no YES no no no no no
172 ¬ no no no no no no no no no no no YES no no
173 – no no no no no no no no YES no no no no no
174 r no no no no no no no no no no no YES no no
175 _ no no no no no no no no no no no YES no no
176 ° no no no no no no no no no no no YES no no
177 ± no no no no no no no no no no no YES no no
178 ² no no no no no no no YES no no no no no no
179 3 no no no no no no no YES no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
180 ‘ no no no no no no no no no no no YES no no
181 µ no no no YES YES YES no no no no no no no no
182 ¶ no no no no no no no no no no no YES no no
183 · no no no no no no no no YES no no no no no
184 , no no no no no no no no no no no YES no no
185 1 no no no no no no no YES no no no no no no
186 º no no no YES YES YES no no no no no no no no
187 » no no no no no no no no YES no no no no no
188 ¼ no no no no no no no YES no no no no no no
189 ½ no no no no no no no YES no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
190 _ no no no no no no no YES no no no no no no
191 ¿ no no no no no no no no YES no no no no no
192 A no no no YES YES no no no no no no no YES no
193 A no no no YES YES no no no no no no no YES no
194 A no no no YES YES no no no no no no no YES no
195 A no no no YES YES no no no no no no no YES no
196 Ä no no no YES YES no no no no no no no YES no
197 Å no no no YES YES no no no no no no no YES no
198 Æ no no no YES YES no no no no no no no YES no
199 Ç no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
200 E no no no YES YES no no no no no no no YES no
201 É no no no YES YES no no no no no no no YES no
202 E no no no YES YES no no no no no no no YES no
203 E no no no YES YES no no no no no no no YES no
204 I no no no YES YES no no no no no no no YES no
205 I no no no YES YES no no no no no no no YES no
206 I no no no YES YES no no no no no no no YES no
207 I no no no YES YES no no no no no no no YES no
208 D no no no YES YES no no no no no no no YES no
209 Ñ no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
210 O no no no YES YES no no no no no no no YES no
211 O no no no YES YES no no no no no no no YES no
212 O no no no YES YES no no no no no no no YES no
213 O no no no YES YES no no no no no no no YES no
214 Ö no no no YES YES no no no no no no no YES no
215 x no no no no no no no no no no no YES no no
216 O no no no YES YES no no no no no no no YES no
217 U no no no YES YES no no no no no no no YES no
218 U no no no YES YES no no no no no no no YES no
219 U no no no YES YES no no no no no no no YES no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
220 Ü no no no YES YES no no no no no no no YES no
221 Y no no no YES YES no no no no no no no YES no
222 _ no no no YES YES no no no no no no no YES no
223 ß no no no YES YES YES no no no no no no no no
224 à no no no YES YES YES no no no no no no no no
225 á no no no YES YES YES no no no no no no no no
226 â no no no YES YES YES no no no no no no no no
227 a no no no YES YES YES no no no no no no no no
228 ä no no no YES YES YES no no no no no no no no
229 å no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
230 æ no no no YES YES YES no no no no no no no no
231 ç no no no YES YES YES no no no no no no no no
232 è no no no YES YES YES no no no no no no no no
233 é no no no YES YES YES no no no no no no no no
234 ê no no no YES YES YES no no no no no no no no
235 ë no no no YES YES YES no no no no no no no no
236 ì no no no YES YES YES no no no no no no no no
237 í no no no YES YES YES no no no no no no no no
238 î no no no YES YES YES no no no no no no no no
239 ï no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
240 d no no no YES YES YES no no no no no no no no
241 ñ no no no YES YES YES no no no no no no no no
242 ò no no no YES YES YES no no no no no no no no
243 ó no no no YES YES YES no no no no no no no no
244 ô no no no YES YES YES no no no no no no no no
245 o no no no YES YES YES no no no no no no no no
246 ö no no no YES YES YES no no no no no no no no
247 ÷ no no no no no no no no no no no YES no no
248 o no no no YES YES YES no no no no no no no no
249 ù no no no YES YES YES no no no no no no no no### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht
250 ú no no no YES YES YES no no no no no no no no
251 û no no no YES YES YES no no no no no no no no
252 ü no no no YES YES YES no no no no no no no no
253 y no no no YES YES YES no no no no no no no no
254 _ no no no YES YES YES no no no no no no no no
255 ÿ no no no YES YES YES no no no no no no no no
Key
In case it’s not obvious, here is the key to the table above:
YES = method returned true
no = method returned false### = character’s numeric value 0-255
chr = printable character
Ctl = IsControl
Dig = IsDigit
HiS = IsHighSurrogate
Let = IsLetter
LoD = IsLetterOrDigit
Low = IsLower
LoS = IsLowSurrogate
Num = IsNumber
Pun = IsPunctuation
Sep = IsSeparator
Sur = IsSurrogate
Sym = IsSymbol
Upp = IsUpper
Wht = IsWhitespace
C# Code
Here is the console test program that generates this table:
using System;namespace CharIs { class Program { static void Main( string[] args ) { string yes = "YES"; string no = "no "; for (int i = 0; i < 256; i++) { if (i % 10 == 0) Console.WriteLine( "n### chr Ctl Dig HiS Let LoD Low LoS Num Pun Sep Sur Sym Upp Wht" ); char c = (char)i; string isControl = Char.IsControl( c ) ? yes : no; string isDigit = Char.IsDigit( c ) ? yes : no; string isHighSurrogate = Char.IsHighSurrogate( c ) ? yes : no; string isLetter = Char.IsLetter( c ) ? yes : no; string isLetterOrDigit = Char.IsLetterOrDigit( c ) ? yes : no; string isLower = Char.IsLower( c ) ? yes : no; string isLowSurrogate = Char.IsLowSurrogate( c ) ? yes : no; string isNumber = Char.IsNumber( c ) ? yes : no; string isPunctuation = Char.IsPunctuation( c ) ? yes : no; string isSeparator = Char.IsSeparator( c ) ? yes : no; string isSurrogate = Char.IsSurrogate( c ) ? yes : no; string isSymbol = Char.IsSymbol( c ) ? yes : no; string isUpper = Char.IsUpper( c ) ? yes : no; string isWhiteSpace = Char.IsWhiteSpace( c ) ? yes : no; if (Char.IsControl( c )) c = ' '; string chr = String.Format( " {0} ", c ); Console.WriteLine( "{0,3} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15}", i, chr, isControl, isDigit, isHighSurrogate, isLetter, isLetterOrDigit, isLower, isLowSurrogate, isNumber, isPunctuation, isSeparator, isSurrogate, isSymbol, isUpper, isWhiteSpace ); } Console.ReadLine(); } } }