示例#1
0
    {                                      /*Задание
                                            * 1. Используя делегаты (множественные) и события промоделируйте
                                            * ситуации приведенные в таблице ниже. Можете добавить новые типы (классы),
                                            * если существующих недостаточно. При реализации методов везде где возможно
                                            * использовать лямбда-выражения.
                                            * 2. Создайте пять методов пользовательской обработки строки (например
                                            * удаление знаков препинания, добавление символов, замена на заглавные,
                                            * удаление лишних пробелов и т.п.). Используя стандартные типы делегатов
                                            * (Action, Func) организуйте алгоритм последовательной обработки строки
                                            * написанными методами.*/
        /*Создать класс Программист с событиями Переименовать и
         * Новое свойство. В main создать некоторое количество объектов
         * (языков программирования). Подпишите объекты на события
         * произвольным образом. Реакция на события может быть
         * следующая: изменение имени/версии, добавление новых операций,
         * технологий или понятий. Проверить результаты изменения
         * состояния объектов после наступления событий, возможно не
         * однократном*/
        static void Main(string[] args)
        {
            Programmer <string>[] programmers = new Programmer <string> [5];
            programmers[0] = new Programmer <string>("C#", "Egor");
            programmers[1] = new Programmer <string>("Swift", "Roman");
            programmers[2] = new Programmer <string>("C++", "Dima");
            programmers[3] = new Programmer <string>("     Java_", "Michael_   ");
            programmers[4] = new Programmer <string>("Python", "Slava");

            for (int i = 0; i < programmers.Length; i++)
            {
                programmers[i].Notify += DisplayMessage;
            }
            //Вывод класса Программист
            Console.WriteLine("//Вывод класса Программист// \n");
            programmers[4].ViewEverythingFromAnyNumber(programmers);

            //Добавление символов
            programmers[4].Rename(programmers, "Dima", "DIMA");
            Console.WriteLine("/Добавление символов(переименование Dima в DIMA)/ \n");
            programmers[4].ViewEverythingFromAnyNumber(programmers);

            CustomStringHandling <Programmer <string> > customStringHandling = new CustomStringHandling <Programmer <string> >();
            Action action = () =>
            {
                programmers[3] = customStringHandling.Capitalization(programmers[3]);
                Console.WriteLine("/Смена регистра(вместо 'Michael_' теперь 'MICHAEL_')/ \n");
                programmers[4].ViewEverythingFromAnyNumber(programmers);
            };

            action();

            //Замена на заглавные
            for (int i = 0; i < programmers.Length; i++)
            {
                Func <Programmer <string>, Programmer <string> > selector = str => customStringHandling.Capitalization(programmers[i]);
                selector(programmers[i]);
            }
            Console.WriteLine("/Замена на заглавные/ \n");
            programmers[4].ViewEverythingFromAnyNumber(programmers);

            //Смена регистра
            Func <string, string> convert = s => s.ToLower();

            for (int i = 0; i < programmers.Length; i++)
            {
                programmers[i].Name = convert(programmers[i].Name);
            }
            Console.WriteLine("/Смена регистра(только имена)/ \n");
            programmers[4].ViewEverythingFromAnyNumber(programmers);

            //Удаление лишних пробелов
            CustomStringHandling <Programmer <string> > RemoveSpacesHandling = new CustomStringHandling <Programmer <string> >();
            Action action2 = () =>
            {
                programmers[3] = RemoveSpacesHandling.RemoveExtraSpaces(programmers[3]);
                Console.WriteLine("/Удаление лишних пробелов/ \n");
                programmers[3].ViewEverythingFromAnyNumber(programmers);
            };

            action2();

            //Удаление знаков препинания
            CustomStringHandling <Programmer <string> > DeletingPunctuationMarks = new CustomStringHandling <Programmer <string> >();
            Action action3 = () =>
            {
                programmers[3] = DeletingPunctuationMarks.RemovingPunctuationMarks(programmers[3]);
                Console.WriteLine("/Удаление знаков препинания(вместо '_michael_' теперь 'michael')/ \n");
                programmers[3].ViewEverythingFromAnyNumber(programmers);
            };

            action3();

            //Вставка одной строки в другую
            CustomStringHandling <Programmer <string> > InsertOneLineIntoAnother = new CustomStringHandling <Programmer <string> >();
            Action action4 = () =>
            {
                programmers[3] = InsertOneLineIntoAnother.AddingCharacters(programmers[3], programmers[4], 2);
                Console.WriteLine("/Вставка одной строки в другую/ \n");
                programmers[3].ViewEverythingFromAnyNumber(programmers);
            };

            action4();

            Console.ReadKey();
        }
示例#2
0
 public Programmer <string> RenameOwner(Programmer <string> programmers, string NewName)
 {
     programmers.Name = NewName;
     return(programmers);
 }
示例#3
0
 public Programmer <string> RemoveExtraSpaces(Programmer <string> p)//удаление лишних пробелов
 {
     p.ProgrammingLanguage = p.ProgrammingLanguage.Trim();
     p.Name = p.Name.Trim();
     return(p);
 }
示例#4
0
 public Programmer <string> Capitalization(Programmer <string> p)//Смена регистра
 {
     p.ProgrammingLanguage = p.ProgrammingLanguage.ToUpper();
     p.Name = p.Name.ToUpper();
     return(p);
 }
示例#5
0
 public Programmer <string> AddingCharacters(Programmer <string> p1, Programmer <string> p2, int space)//Вставка одной строки в другую
 {
     p1.Name = p2.Name.Insert(space, p2.Name);
     p1.ProgrammingLanguage = p2.ProgrammingLanguage.Insert(space, p2.Name);
     return(p2);
 }
示例#6
0
 public Programmer <string> RemovingPunctuationMarks(Programmer <string> p)//Удаление знаков препинания, используя регулярные выражения
 {
     p.ProgrammingLanguage = Regex.Replace(p.ProgrammingLanguage, "[-.?!)(,:_]", "");
     p.Name = Regex.Replace(p.Name, "[-.?!)(,:_]", "");
     return(p);
 }