4.6 Characters
Characters in The Racket Guide introduces characters.
Characters range over Unicode scalar values, which includes characters whose values range from #x0 to #x10FFFF, but not including #xD800 to #xDFFF. The scalar values are a subset of the Unicode code points.
Two characters are eqv? if they correspond to the same scalar value. For each scalar value less than 256, character values that are eqv? are also eq?. Characters produced by the default reader are interned in read-syntax mode.
See Reading Characters for information on reading characters and Printing Characters for information on printing characters.
Changed in version 6.1.1.8 of package base: Updated from Unicode 5.0.1 to Unicode 7.0.0.
4.6.1 Characters and Scalar Values
procedure
(char->integer char) → exact-integer?
char : char?
> (char->integer #\A) 65
procedure
(integer->char k) → char?
k :
(and/c exact-integer? (or/c (integer-in 0 55295) (integer-in 57344 1114111)))
> (integer->char 65) #\A
procedure
(char-utf-8-length char) → (integer-in 1 6)
char : char?
4.6.2 Character Comparisons
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
procedure
(char-ci<=? char1 char2 ...) → boolean?
char1 : char? char2 : char?
> (char-ci<=? #\A #\a) #t
> (char-ci<=? #\a #\A) #t
> (char-ci<=? #\a #\b #\b) #t
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
procedure
(char-ci>=? char1 char2 ...) → boolean?
char1 : char? char2 : char?
> (char-ci>=? #\A #\a) #t
> (char-ci>=? #\a #\A) #t
> (char-ci>=? #\c #\b #\b) #t
Changed in version 7.0.0.13 of package base: Allow one argument, in addition to allowing two or more.
4.6.3 Classifications
procedure
(char-alphabetic? char) → boolean?
char : char?
procedure
(char-lower-case? char) → boolean?
char : char?
procedure
(char-upper-case? char) → boolean?
char : char?
procedure
(char-title-case? char) → boolean?
char : char?
procedure
(char-numeric? char) → boolean?
char : char?
procedure
(char-symbolic? char) → boolean?
char : char?
procedure
(char-punctuation? char) → boolean?
char : char?
procedure
(char-graphic? char) → boolean?
char : char?
procedure
(char-whitespace? char) → boolean?
char : char?
procedure
(char-blank? char) → boolean?
char : char?
procedure
(char-iso-control? char) → boolean?
char : char?
procedure
(char-general-category char) → symbol?
char : char?
procedure
→
(listof (list/c exact-nonnegative-integer? exact-nonnegative-integer? boolean?))
4.6.4 Character Conversions
procedure
(char-upcase char) → char?
char : char?
String procedures, such as string-upcase, handle the case where Unicode defines a locale-independent mapping from the code point to a code-point sequence (in addition to the 1-1 mapping on scalar values).
> (char-upcase #\a) #\A
> (char-upcase #\λ) #\Λ
> (char-upcase #\space) #\space
procedure
(char-downcase char) → char?
char : char?
> (char-downcase #\A) #\a
> (char-downcase #\Λ) #\λ
> (char-downcase #\space) #\space
procedure
(char-titlecase char) → char?
char : char?
> (char-upcase #\a) #\A
> (char-upcase #\λ) #\Λ
> (char-upcase #\space) #\space
procedure
(char-foldcase char) → char?
char : char?
> (char-foldcase #\A) #\a
> (char-foldcase #\Σ) #\σ
> (char-foldcase #\ς) #\σ
> (char-foldcase #\space) #\space