Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using ExtensionMethods; // Методы расширения
- namespace CSharpStrings
- {
- class Program
- {
- static String Text = String.Empty;
- static void Main(string[] args)
- {
- // Если строка пустая или содержит только пробелы
- while (String.IsNullOrWhiteSpace(Text)) {
- Console.Clear();
- Console.WriteLine("Введите начальную строку с которой будут произведены операции:");
- Text = Console.ReadLine();
- }
- //---------------------------------------------------------------------------------------------------------------
- // Очищаем строку от пробелов в начале (если он есть в 0 позиции строки)
- if (Char.IsWhiteSpace(Text[0])) {
- Console.WriteLine("Найдены пробелы в начале строки. Выполнен TrimStart: \n{0}\n", Text = Text.TrimStart());
- }
- // Очищаем строку от пробелов в конце (если он есть в последней позиции строки)
- else if (Char.IsWhiteSpace(Text[Text.Length-1])) {
- Console.WriteLine("Найдены пробелы в конце строки. Выполнен TrimEnd: \n{0}\n", Text = Text.TrimEnd());
- }
- // Или используем метод String.Trim()
- //---------------------------------------------------------------------------------------------------------------
- Console.WriteLine("Количество символов: \n{0}\n", Text.Length);
- Console.WriteLine("Количество пробелов: \n{0}\n", Text.Count(Char.IsWhiteSpace));
- Console.WriteLine("Количество слов: \n{0}\n", Text.WordsCount());
- Console.WriteLine("Реверс строки: \n{0}\n", Text.Reverse());
- Console.WriteLine("На другой раскладке: \n{0}\n", Text.ChangeLayout());
- Console.WriteLine("Реверс в другой раскладке: \n{0}\n", Text.ChangeLayout().Reverse());
- Console.WriteLine("К началу строки добавлено количество слов в ней: \n{0}\n", String.Concat(Text.WordsCount(), " | ", Text));
- Console.WriteLine("К концу строки добавлено количество слов в ней: \n{0}\n", String.Concat(Text, " | ", Text.WordsCount()));
- Console.ReadLine();
- }
- }
- }
- // Методы расширения
- // Позволяет расширять базовые типы и классы C# / .Net Framework
- namespace ExtensionMethods
- {
- public static class MyExtensions
- {
- // Пустая ли строка (только пробелы)
- public static Boolean IsEmptyOrWhiteSpace(this String value) => value.All(Char.IsWhiteSpace);
- // Количество слов в строке
- public static Int32 WordsCount(this String value) {
- return value.Split(new Char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
- }
- // Переворачивает строку (реверс)
- public static String Reverse(this String value) {
- Char[] charsArray = value.ToCharArray();
- Array.Reverse(charsArray);
- return new String(charsArray);
- }
- // Таблица соответствия символов на RUS / ENG раскладках
- private static string keysRUS = "Ё!\"№;%:?*()_+ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,ё1234567890-=йцукенгшщзхъ\\фывапролджэячсмитьбю. ";
- private static string keysENG = "~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./ ";
- // Сменяет раскладку строки с ENG на RUS или наоборот
- public static String ChangeLayout(this String value)
- {
- String res = String.Empty;
- for (int i = 0; i < value.Length; i++) {
- // Пытаемся выполнить замену из RUS char в ENG char в позиции i (счетчик)
- try {
- res += keysENG.Substring(keysRUS.IndexOf(value[i]), 1);
- }
- // Иначе переводим этот символ (char) в позиции i из ENG в RUS
- catch {
- res += keysRUS.Substring(keysENG.IndexOf(value[i]), 1);
- }
- // IndexOf - находит первое вхождение символа в строке, т.к. номер позиции буквы "П" в слове "Привет" == 0 позиция
- // Substring - Вырезает из строки подстроку длиной указанной вторым аргументом (в нашем случае равняется одному символу), напр: "Привет".Substring(1, 4) == "риве"
- }
- return res;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement