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.
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 != "");
}
}
}