namespace Core.Utility; public static class TextUtil { /// /// Get the ordinal value of positive integers. /// /// /// Only works for english-based cultures. /// Code from: http://stackoverflow.com/questions/20156/is-there-a-quick-way-to-create-ordinals-in-c/31066#31066 /// With help: http://www.wisegeek.com/what-is-an-ordinal-number.htm /// /// The number. /// Ordinal value of positive integers, or if less than 1. /// https://stackoverflow.com/a/620504/99492 public static string Ordinal(this int number) { const string TH = "th"; string s = number.ToString(); // Negative and zero have no ordinal representation if (number < 1) { return s; } number %= 100; if ((number >= 11) && (number <= 13)) { return s + TH; } switch (number % 10) { case 1: return s + "st"; case 2: return s + "nd"; case 3: return s + "rd"; default: return s + TH; } } public static void ConsoleWriteTable( Func getVal, string rowHeader, int[] rowVars, string colHeader, int[] colVars) { var chl = $" {colHeader} 0".Length; var rhl = $"{rowHeader} 0".Length + 3; Console.Write(new string(' ', rhl)); foreach (var c in colVars) { Console.Write($" {colHeader} {c + 1}"); } Console.WriteLine(); Console.WriteLine(); foreach (var r in rowVars) { var rhead = $"{rowHeader} {r + 1}:"; Console.Write(rhead.PadRight(rhl)); foreach (var c in colVars) { var v = getVal(r, c) ? "1" : " "; Console.Write($"{v.PadLeft(chl)}"); } Console.WriteLine(); } Console.WriteLine(); } }