Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Character Test Utility

0.00/5 (No votes)
20 Aug 2012CPOL 5.5K  
Character test utility

Every now and then, I have to decide if a character satisfies a predicate (char.IsPunctuation, char.IsSymbol, and so on) found on the System.Char class. The MSDN pages are of limited help plus I need to browse each predicate. Therefore, I wrote a small piece of code that, aside from the fact that it’s quite simple and has nothing spectacular, tests a set of characters through all these predicates.

Basically, this is a reference for me, in order to avoid rewriting this over and over again, but since it could be helpful to others too, I decided to publish it here.

C#
using System;
using System.Linq;

namespace CharTest
{
    internal class Program
    {
        static void Main()
        {
            var charPredicates = new Predicate<char>[]
            {
                char.IsControl,
                char.IsDigit,
                char.IsHighSurrogate,
                char.IsLetter,
                char.IsLetterOrDigit,
                char.IsLowSurrogate,
                char.IsLower,
                char.IsNumber,
                char.IsPunctuation,
                char.IsSeparator,
                char.IsSurrogate,
                char.IsSymbol,
                char.IsUpper,
                char.IsWhiteSpace
            };

            Console.WriteLine("Enter an empty line to exit");
            Console.WriteLine();
            Console.WriteLine();

            string line;
            do
            {
                line = Console.ReadLine();
                var chars = line.Distinct().ToArray();
                for (var i = 0; i < chars.Count(); i++)
                {
                    var ch = chars[i];
                    Console.WriteLine();
                    Console.WriteLine("Distinct character " + (i + 1) + " : '" + ch + "'");
                    Console.WriteLine("-----------------------------------------");
                    foreach (var predicate in charPredicates)
                    {
                        Console.Write(predicate.Method.Name);
                        Console.SetCursorPosition(20, Console.CursorTop);
                        Console.WriteLine(predicate(ch));
                    }
                }
            }
            while (line != "");
        }
    }
}


License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)