string is ... provides a list of class types but doesn't indicate how a particular character is classified.
The following code produces a classification table for the characters in the range 0-127. Example output is also provided.
set classes {
alnum alpha ascii boolean control digit double false graph integer lower
print punct space true upper wordchar xdigit
}
proc classHeader {} {
global classes
puts {}
set i 1
foreach class $classes {
puts [format { %2s - %s} $i $class]
incr i
}
puts {}
puts -nonewline { }
set i 1
foreach class $classes {
puts -nonewline [format { %2s} $i]
incr i
}
puts {}
}
proc reportClass c {
global classes
set result {}
foreach class $classes {
if {[string is $class $c] eq 1} {
append result { Y}
} else {
append result { N}
}
}
return $result
}
proc main {} {
classHeader
for {set n 0} {$n < 128} {incr n} {
set c [format %c $n]
if {[string is print $c]} {
puts [format {%02X %1s %s} $n $c [reportClass $c]]
} else {
puts [format {%02X %s} $n [reportClass $c]]
}
}
}
mainSample Output
1 - alnum
2 - alpha
3 - ascii
4 - boolean
5 - control
6 - digit
7 - double
8 - false
9 - graph
10 - integer
11 - lower
12 - print
13 - punct
14 - space
15 - true
16 - upper
17 - wordchar
18 - xdigit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
00 N N N N Y N N N N N N N N N N N N N
01 N N Y N Y N N N N N N N N N N N N N
02 N N Y N Y N N N N N N N N N N N N N
03 N N Y N Y N N N N N N N N N N N N N
04 N N Y N Y N N N N N N N N N N N N N
05 N N Y N Y N N N N N N N N N N N N N
06 N N Y N Y N N N N N N N N N N N N N
07 N N Y N Y N N N N N N N N N N N N N
08 N N Y N Y N N N N N N N N N N N N N
09 N N Y N Y N N N N N N N N Y N N N N
0A N N Y N Y N N N N N N N N Y N N N N
0B N N Y N Y N N N N N N N N Y N N N N
0C N N Y N Y N N N N N N N N Y N N N N
0D N N Y N Y N N N N N N N N Y N N N N
0E N N Y N Y N N N N N N N N N N N N N
0F N N Y N Y N N N N N N N N N N N N N
10 N N Y N Y N N N N N N N N N N N N N
11 N N Y N Y N N N N N N N N N N N N N
12 N N Y N Y N N N N N N N N N N N N N
13 N N Y N Y N N N N N N N N N N N N N
14 N N Y N Y N N N N N N N N N N N N N
15 N N Y N Y N N N N N N N N N N N N N
16 N N Y N Y N N N N N N N N N N N N N
17 N N Y N Y N N N N N N N N N N N N N
18 N N Y N Y N N N N N N N N N N N N N
19 N N Y N Y N N N N N N N N N N N N N
1A N N Y N Y N N N N N N N N N N N N N
1B N N Y N Y N N N N N N N N N N N N N
1C N N Y N Y N N N N N N N N N N N N N
1D N N Y N Y N N N N N N N N N N N N N
1E N N Y N Y N N N N N N N N N N N N N
1F N N Y N Y N N N N N N N N N N N N N
20 N N Y N N N N N N N N Y N Y N N N N
21 ! N N Y N N N N N Y N N Y Y N N N N N
22 " N N Y N N N N N Y N N Y Y N N N N N
23 # N N Y N N N N N Y N N Y Y N N N N N
24 $ N N Y N N N N N Y N N Y N N N N N N
25 % N N Y N N N N N Y N N Y Y N N N N N
26 & N N Y N N N N N Y N N Y Y N N N N N
27 ' N N Y N N N N N Y N N Y Y N N N N N
28 ( N N Y N N N N N Y N N Y Y N N N N N
29 ) N N Y N N N N N Y N N Y Y N N N N N
2A * N N Y N N N N N Y N N Y Y N N N N N
2B + N N Y N N N N N Y N N Y N N N N N N
2C , N N Y N N N N N Y N N Y Y N N N N N
2D - N N Y N N N N N Y N N Y Y N N N N N
2E . N N Y N N N N N Y N N Y Y N N N N N
2F / N N Y N N N N N Y N N Y Y N N N N N
30 0 Y N Y Y N Y Y Y Y Y N Y N N N N Y Y
31 1 Y N Y Y N Y Y N Y Y N Y N N Y N Y Y
32 2 Y N Y N N Y Y N Y Y N Y N N N N Y Y
33 3 Y N Y N N Y Y N Y Y N Y N N N N Y Y
34 4 Y N Y N N Y Y N Y Y N Y N N N N Y Y
35 5 Y N Y N N Y Y N Y Y N Y N N N N Y Y
36 6 Y N Y N N Y Y N Y Y N Y N N N N Y Y
37 7 Y N Y N N Y Y N Y Y N Y N N N N Y Y
38 8 Y N Y N N Y Y N Y Y N Y N N N N Y Y
39 9 Y N Y N N Y Y N Y Y N Y N N N N Y Y
3A : N N Y N N N N N Y N N Y Y N N N N N
3B ; N N Y N N N N N Y N N Y Y N N N N N
3C < N N Y N N N N N Y N N Y N N N N N N
3D = N N Y N N N N N Y N N Y N N N N N N
3E > N N Y N N N N N Y N N Y N N N N N N
3F ? N N Y N N N N N Y N N Y Y N N N N N
40 @ N N Y N N N N N Y N N Y Y N N N N N
41 A Y Y Y N N N N N Y N N Y N N N Y Y Y
42 B Y Y Y N N N N N Y N N Y N N N Y Y Y
43 C Y Y Y N N N N N Y N N Y N N N Y Y Y
44 D Y Y Y N N N N N Y N N Y N N N Y Y Y
45 E Y Y Y N N N N N Y N N Y N N N Y Y Y
46 F Y Y Y Y N N N Y Y N N Y N N N Y Y Y
47 G Y Y Y N N N N N Y N N Y N N N Y Y N
48 H Y Y Y N N N N N Y N N Y N N N Y Y N
49 I Y Y Y N N N N N Y N N Y N N N Y Y N
4A J Y Y Y N N N N N Y N N Y N N N Y Y N
4B K Y Y Y N N N N N Y N N Y N N N Y Y N
4C L Y Y Y N N N N N Y N N Y N N N Y Y N
4D M Y Y Y N N N N N Y N N Y N N N Y Y N
4E N Y Y Y Y N N N Y Y N N Y N N N Y Y N
4F O Y Y Y N N N N N Y N N Y N N N Y Y N
50 P Y Y Y N N N N N Y N N Y N N N Y Y N
51 Q Y Y Y N N N N N Y N N Y N N N Y Y N
52 R Y Y Y N N N N N Y N N Y N N N Y Y N
53 S Y Y Y N N N N N Y N N Y N N N Y Y N
54 T Y Y Y Y N N N N Y N N Y N N Y Y Y N
55 U Y Y Y N N N N N Y N N Y N N N Y Y N
56 V Y Y Y N N N N N Y N N Y N N N Y Y N
57 W Y Y Y N N N N N Y N N Y N N N Y Y N
58 X Y Y Y N N N N N Y N N Y N N N Y Y N
59 Y Y Y Y Y N N N N Y N N Y N N Y Y Y N
5A Z Y Y Y N N N N N Y N N Y N N N Y Y N
5B [ N N Y N N N N N Y N N Y Y N N N N N
5C \ N N Y N N N N N Y N N Y Y N N N N N
5D ] N N Y N N N N N Y N N Y Y N N N N N
5E ^ N N Y N N N N N Y N N Y N N N N N N
5F _ N N Y N N N N N Y N N Y Y N N N Y N
60 ` N N Y N N N N N Y N N Y N N N N N N
61 a Y Y Y N N N N N Y N Y Y N N N N Y Y
62 b Y Y Y N N N N N Y N Y Y N N N N Y Y
63 c Y Y Y N N N N N Y N Y Y N N N N Y Y
64 d Y Y Y N N N N N Y N Y Y N N N N Y Y
65 e Y Y Y N N N N N Y N Y Y N N N N Y Y
66 f Y Y Y Y N N N Y Y N Y Y N N N N Y Y
67 g Y Y Y N N N N N Y N Y Y N N N N Y N
68 h Y Y Y N N N N N Y N Y Y N N N N Y N
69 i Y Y Y N N N N N Y N Y Y N N N N Y N
6A j Y Y Y N N N N N Y N Y Y N N N N Y N
6B k Y Y Y N N N N N Y N Y Y N N N N Y N
6C l Y Y Y N N N N N Y N Y Y N N N N Y N
6D m Y Y Y N N N N N Y N Y Y N N N N Y N
6E n Y Y Y Y N N N Y Y N Y Y N N N N Y N
6F o Y Y Y N N N N N Y N Y Y N N N N Y N
70 p Y Y Y N N N N N Y N Y Y N N N N Y N
71 q Y Y Y N N N N N Y N Y Y N N N N Y N
72 r Y Y Y N N N N N Y N Y Y N N N N Y N
73 s Y Y Y N N N N N Y N Y Y N N N N Y N
74 t Y Y Y Y N N N N Y N Y Y N N Y N Y N
75 u Y Y Y N N N N N Y N Y Y N N N N Y N
76 v Y Y Y N N N N N Y N Y Y N N N N Y N
77 w Y Y Y N N N N N Y N Y Y N N N N Y N
78 x Y Y Y N N N N N Y N Y Y N N N N Y N
79 y Y Y Y Y N N N N Y N Y Y N N Y N Y N
7A z Y Y Y N N N N N Y N Y Y N N N N Y N
7B { N N Y N N N N N Y N N Y Y N N N N N
7C | N N Y N N N N N Y N N Y N N N N N N
7D } N N Y N N N N N Y N N Y Y N N N N N
7E ~ N N Y N N N N N Y N N Y N N N N N N
7F N N Y N Y N N N N N N N N N N N N N