fork download
  1. using System;
  2. using System.Globalization;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. string test = Console.ReadLine();
  9. foreach (var c in test)
  10. {
  11. var idx = findIdx(c);
  12. if (idx != -1)
  13. Console.WriteLine("{0}: index = {1}", c, idx);
  14. else
  15. Console.WriteLine("{0}: not found", c);
  16. }
  17. }
  18.  
  19. static CultureInfo ics = CultureInfo.InvariantCulture;
  20. static CultureInfo rcs = new CultureInfo("ru-RU");
  21.  
  22. static int findIdx(char c)
  23. {
  24. string cs = c.ToString(ics);
  25. if (string.Compare(cs, "а", false, rcs) >= 0 &&
  26. string.Compare(cs, "я", false, rcs) <= 0)
  27. {
  28. // русская буква
  29. // выясним, где она относительно ё
  30. int compareToJo = string.Compare(cs, "ё", false, rcs);
  31. if (compareToJo < 0)
  32. return (int)c - (int)'а';
  33. else if (compareToJo > 0)
  34. return (int)c - (int)'а' + 1;
  35. else
  36. return 6; // номер ё в списке
  37. }
  38.  
  39. if (string.Compare(cs, "a", false, ics) >= 0 &&
  40. string.Compare(cs, "z", false, ics) <= 0)
  41. return (int)c - (int)'a' + 33;
  42.  
  43. return -1;
  44. }
  45. }
Success #stdin #stdout 0.06s 34064KB
stdin
абвгдеёжзяabz
stdout
а: index = 0
б: index = 1
в: index = 2
г: index = 3
д: index = 4
е: index = 5
ё: index = 6
ж: index = 7
з: index = 8
я: index = 32
a: index = 33
b: index = 34
z: index = 58