Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using ExtensionMethods; // Методы расширения
  4.  
  5. namespace CSharpStrings
  6. {
  7. class Program
  8. {
  9. static String Text = String.Empty;
  10.  
  11. static void Main(string[] args)
  12. {
  13. // Если строка пустая или содержит только пробелы
  14. while (String.IsNullOrWhiteSpace(Text)) {
  15. Console.Clear();
  16. Console.WriteLine("Введите начальную строку с которой будут произведены операции:");
  17. Text = Console.ReadLine();
  18. }
  19. //---------------------------------------------------------------------------------------------------------------
  20. // Очищаем строку от пробелов в начале (если он есть в 0 позиции строки)
  21. if (Char.IsWhiteSpace(Text[0])) {
  22. Console.WriteLine("Найдены пробелы в начале строки. Выполнен TrimStart: \n{0}\n", Text = Text.TrimStart());
  23. }
  24. // Очищаем строку от пробелов в конце (если он есть в последней позиции строки)
  25. else if (Char.IsWhiteSpace(Text[Text.Length-1])) {
  26. Console.WriteLine("Найдены пробелы в конце строки. Выполнен TrimEnd: \n{0}\n", Text = Text.TrimEnd());
  27. }
  28. // Или используем метод String.Trim()
  29. //---------------------------------------------------------------------------------------------------------------
  30. Console.WriteLine("Количество символов: \n{0}\n", Text.Length);
  31. Console.WriteLine("Количество пробелов: \n{0}\n", Text.Count(Char.IsWhiteSpace));
  32. Console.WriteLine("Количество слов: \n{0}\n", Text.WordsCount());
  33. Console.WriteLine("Реверс строки: \n{0}\n", Text.Reverse());
  34. Console.WriteLine("На другой раскладке: \n{0}\n", Text.ChangeLayout());
  35. Console.WriteLine("Реверс в другой раскладке: \n{0}\n", Text.ChangeLayout().Reverse());
  36. Console.WriteLine("К началу строки добавлено количество слов в ней: \n{0}\n", String.Concat(Text.WordsCount(), " | ", Text));
  37. Console.WriteLine("К концу строки добавлено количество слов в ней: \n{0}\n", String.Concat(Text, " | ", Text.WordsCount()));
  38.  
  39. Console.ReadLine();
  40. }
  41. }
  42. }
  43.  
  44. // Методы расширения
  45. // Позволяет расширять базовые типы и классы C# / .Net Framework
  46. namespace ExtensionMethods
  47. {
  48. public static class MyExtensions
  49. {
  50. // Пустая ли строка (только пробелы)
  51. public static Boolean IsEmptyOrWhiteSpace(this String value) => value.All(Char.IsWhiteSpace);
  52.  
  53. // Количество слов в строке
  54. public static Int32 WordsCount(this String value) {
  55. return value.Split(new Char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
  56. }
  57.  
  58. // Переворачивает строку (реверс)
  59. public static String Reverse(this String value) {
  60. Char[] charsArray = value.ToCharArray();
  61. Array.Reverse(charsArray);
  62. return new String(charsArray);
  63. }
  64.  
  65. // Таблица соответствия символов на RUS / ENG раскладках
  66. private static string keysRUS = "Ё!\"№;%:?*()_+ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,ё1234567890-=йцукенгшщзхъ\\фывапролджэячсмитьбю. ";
  67. private static string keysENG = "~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./ ";
  68.  
  69. // Сменяет раскладку строки с ENG на RUS или наоборот
  70. public static String ChangeLayout(this String value)
  71. {
  72. String res = String.Empty;
  73. for (int i = 0; i < value.Length; i++) {
  74. // Пытаемся выполнить замену из RUS char в ENG char в позиции i (счетчик)
  75. try {
  76. res += keysENG.Substring(keysRUS.IndexOf(value[i]), 1);
  77. }
  78. // Иначе переводим этот символ (char) в позиции i из ENG в RUS
  79. catch {
  80. res += keysRUS.Substring(keysENG.IndexOf(value[i]), 1);
  81. }
  82. // IndexOf - находит первое вхождение символа в строке, т.к. номер позиции буквы "П" в слове "Привет" == 0 позиция
  83. // Substring - Вырезает из строки подстроку длиной указанной вторым аргументом (в нашем случае равняется одному символу), напр: "Привет".Substring(1, 4) == "риве"
  84. }
  85. return res;
  86. }
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement