2.1. Determining the Kind of Character a Char Contains

Problem

You 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 (i.e., Unicode characters with a value greater than 64K). Similarly, you have a string variable and want to determine the kind of character in one or more positions within this string.

Solution

To determine the value of a char, use the built-in static methods on the System.Char structure shown here:

	Char.IsControl          Char.IsDigit
	Char.IsLetter           Char.IsNumber
	Char.IsPunctuation      Char.IsSeparator
	Char.IsSurrogate        Char.IsSymbol
	Char.IsWhitespace

Discussion

The following examples demonstrate how to use the methods shown in the Solution section in an extension method to return the kind of a character. First, create an enumeration to define the various types of characters:

	public enum CharKind
	{
	    Digit,
	    Letter,
	    Number,
	    Punctuation,
	    Unknown
	}

Next, create the extension method that contains the logic to determine the kind of a character and to return a CharKind enumeration value indicating that type:

	static class CharStrExtMethods
	{
	    public static CharKind GetCharKind(this char theChar)
	    {
	        if (Char.IsLetter(theChar))
	        {
	            return CharKind.Letter;
	        }
	        else if (Char.IsNumber(theChar))
	        {
	            return CharKind.Number;
	        }
	        else if (Char.IsPunctuation(theChar))
	        {
	            return CharKind.Punctuation;
	        }
	        else
	        {
	            return CharKind.Unknown;
	        }
	    }
	}

The GetCharKind ...

Get C# 3.0 Cookbook, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.