Updated 2005-12-28 22:29:00

The "string is <class>" command provides a list of class types but doesn't indicate how a particular character will be classified. The following code produces a classification table for the characters in the range 0-127. Example output is also provide.

Tom Krehbiel

Code
 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}]]
         }
     }
 }
 main

EXAMPLE 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

Category Example | Category Characters | Category String Processing | Characters | Character