[ Team LiB ] |
Recipe 2.1 Determining the Kind of CharacterProblemYou have a variable of type char and wish to determine the kind of character it contains—a letter, digit, number, punctuation character, control character, separator character, symbol, whitespace, or surrogate character. Similarly, you have a string variable and want to determine the kind of character in one or more positions within this string. SolutionUse the built-in static methods on the System.Char structure shown here:
DiscussionThe following examples demonstrate how to use the methods shown in the Solution section in a function to return the kind of a character. First, create an enumeration to define the various types of characters: public enum CharKind { Control, Digit, Letter, Number, Punctuation, Separator, Surrogate, Symbol, Whitespace, Unknown } Next, create a method that contains the logic to determine the type of a character and to return a CharKind enumeration value indicating that type: public static CharKind GetCharKind(char theChar) { if (Char.IsControl(theChar)) { return CharKind.Control; } else if (Char.IsDigit(theChar)) { return CharKind.Digit; } else if (Char.IsLetter(theChar)) { return CharKind.Letter; } else if (Char.IsNumber(theChar)) { return CharKind.Number; } else if (Char.IsPunctuation(theChar)) { return CharKind.Punctuation; } else if (Char.IsSeparator(theChar)) { return CharKind.Separator; } else if (Char.IsSurrogate(theChar)) { return CharKind.Surrogate; } else if (Char.IsSymbol(theChar)) { return CharKind.Symbol; } else if (Char.IsWhiteSpace(theChar)) { return CharKind.Whitespace; } else { return CharKind.Unknown; } } If, however, a character in a string needs to be evaluated, use the overloaded static methods on the Char structure. The following code modifies the GetCharKind method to accept a string variable and a character position in that string. The character position determines which character in the string is evaluated: public static CharKind GetCharKindInString(string theString, int charPosition) { if (Char.IsControl(theString, charPosition)) { return CharKind.Control; } else if (Char.IsDigit(theString, charPosition)) { return CharKind.Digit; } else if (Char.IsLetter(theString, charPosition)) { return CharKind.Letter; } else if (Char.IsNumber(theString, charPosition)) { return CharKind.Number; } else if (Char.IsPunctuation(theString, charPosition)) { return CharKind.Punctuation; } else if (Char.IsSeparator(theString, charPosition)) { return CharKind.Separator; } else if (Char.IsSurrogate(theString, charPosition)) { return CharKind.Surrogate; } else if (Char.IsSymbol(theString, charPosition)) { return CharKind.Symbol; } else if (Char.IsWhiteSpace(theString, charPosition)) { return CharKind.Whitespace; } else { return CharKind.Unknown; } } The GetCharKind method accepts a character as a parameter and performs a series of tests on that character using the Char type's built-in static methods. An enumeration of all the different types of characters is defined and is returned by the GetCharKind method. Table 2-1 describes each of the static Char methods.
The following code example determines whether the fifth character (the charPosition parameter is zero-based) in the string is a digit: if (GetCharKind("abcdefg", 4) == CharKind.Digit) {...} See AlsoSee the "Char Structure" topic in the MSDN documentation. |
[ Team LiB ] |