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 .