9.9 CharacterClassΒΆ

The CharacterClass domain allows classes of characters to be defined and manipulated efficiently. Character classes can be created by giving either a string or a list of characters.

cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char

“y”]

\[\]
“aeiouy”

Type: CharacterClass

cl2 := charClass "bcdfghjklmnpqrstvwxyz"
\[\]
“bcdfghjklmnpqrstvwxyz”

Type: CharacterClass

A number of character classes are predefined for convenience.

digit()
\[\]
“0123456789”

Type: CharacterClass

hexDigit()
\[\]
“0123456789ABCDEFabcdef”

Type: CharacterClass

upperCase()
\[\]
“ABCDEFGHIJKLMNOPQRSTUVWXYZ”

Type: CharacterClass

lowerCase()
\[\]
“abcdefghijklmnopqrstuvwxyz”

Type: CharacterClass

alphabetic()
\[\]
“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”

Type: CharacterClass

alphanumeric()
\[\]
“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”

Type: CharacterClass

You can quickly test whether a character belongs to a class.

member?(char "a", cl1)
\[\]
true

Type: Boolean

member?(char "a", cl2)
\[\]
false

Type: Boolean

Classes have the usual set operations because the CharacterClass domain belongs to the category FiniteSetAggregate(Character).

intersect(cl1, cl2)
\[\]
“y”

Type: CharacterClass

union(cl1,cl2)
\[\]
“abcdefghijklmnopqrstuvwxyz”

Type: CharacterClass

difference(cl1,cl2)
\[\]
“aeiou”

Type: CharacterClass

intersect(complement(cl1),cl2)
\[\]
“bcdfghjklmnpqrstvwxz”

Type: CharacterClass

You can modify character classes by adding or removing characters.

insert!(char "a", cl2)
\[\]
“abcdfghjklmnpqrstvwxyz”

Type: CharacterClass

remove!(char "b", cl2)
\[\]
“acdfghjklmnpqrstvwxyz”

Type: CharacterClass

For more information on related topics, see CharacterXmpPage and StringXmpPage .