Using the ucs2character class
Introduction
The ucs2character class provides static methods for evaluating and manipulating UCS-2 characters.
Analyzing Characters
Methods are provided for determining if a UCS-2 character is alphabetic, alphanumeric, lower case, upper case, etc.
#include <rudiments/ucs2character.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// print information about all ascii characters
for (int32_t uc=0; uc<128; uc++) {
ucs2_t c=(ucs2_t)uc;
stdoutput.printf("character %c:\n",(char)c);
stdoutput.printf(" is alphanumeric : %s\n",
(ucs2character::isAlphanumeric(c))?"yes":"no");
stdoutput.printf(" is alphabetical : %s\n",
(ucs2character::isAlphabetical(c))?"yes":"no");
stdoutput.printf(" is lower case : %s\n",
(ucs2character::isLowerCase(c))?"yes":"no");
stdoutput.printf(" is upper case : %s\n",
(ucs2character::isUpperCase(c))?"yes":"no");
stdoutput.printf(" is punctuation : %s\n",
(ucs2character::isPunctuation(c))?"yes":"no");
stdoutput.printf(" is printable : %s\n",
(ucs2character::isPrintable(c))?"yes":"no");
stdoutput.printf(" is printable (non-space): %s\n",
(ucs2character::isPrintableNonSpace(c))?"yes":"no");
stdoutput.printf(" is control character : %s\n",
(ucs2character::isControlCharacter(c))?"yes":"no");
stdoutput.printf(" is digit : %s\n",
(ucs2character::isDigit(c))?"yes":"no");
stdoutput.printf(" is hex digit : %s\n",
(ucs2character::isHexDigit(c))?"yes":"no");
stdoutput.printf(" is blank : %s\n",
(ucs2character::isBlank(c))?"yes":"no");
stdoutput.printf(" is whitespace : %s\n",
(ucs2character::isWhitespace(c))?"yes":"no");
stdoutput.printf(" is ascii : %s\n",
(ucs2character::isAscii(c))?"yes":"no");
}
}
Transforming Characters
Methods are also provided for transforming the UCS-2 character to upper or lower case, and to 7-bit ascii, by clearing the higher order bits.
#include <rudiments/ucs2character.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// perform case conversions on all ascii characters
for (int32_t uc=0; uc<128; uc++) {
ucs2_t c=(ucs2_t)uc;
stdoutput.printf("character %c:\n",(char)c);
stdoutput.printf(" to upper case : %c\n",
(char)ucs2character::upper(c));
stdoutput.printf(" to lower case : %c\n",
(char)ucs2character::lower(c));
// place a 1 in bit 8
c=c|0x80;
stdoutput.printf(" to ascii : %c\n",
(char)ucs2character::convertToAscii(c));
}
}
Member of a Set
An isInSet() method is also provided which returns true if the specified UCS-2 character is a member of the specified set of UCS-2 characters and false otherwise.
#include <rudiments/ucs2charstring.h>
#include <rudiments/ucs2character.h>
#include <rudiments/charstring.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// define the set
ucs2literal(set,"abcdefg");
// duplicate the set as a char string for display
char *setstr=charstring::duplicate("abcdefg");
// loop through the alphabet...
for (ucs2_t c=(ucs2_t)'a'; c<=(ucs2_t)'z'; c++) {
stdoutput.printf("is %c in the set \"%s\"? %s\n",
(char)c,setstr,
(ucs2character::isInSet(c,set))?"yes":"no");
}
delete[] setstr;
}