Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Text.RegularExpressions;
- namespace ez
- {
- class StringLine
- {
- /* Задание 9. Создать класс для работы сo строками.Разработать следующие члены класса:
- 1. Поле:
- • string line;
- 2. Конструктор, позволяющий создать строку на основе заданного строкового литерала.
- 3. Методы, позволяющие:
- • выводить на экран все символы строки, встречающиеся в ней ровно один раз;
- • вывести на экран самую длинную последовательность повторяющихся символов в строке;
- • подсчет количества букв, цифр и пробелов в строке.
- 4. Свойство, возвращающее общее количество символов в строке (доступное только для чтения);
- 5. Индексатор, позволяющий по индексу обращаться к соответствующему символу строки(доступный только для чтения).
- 6. Перегрузку:
- • операции унарного !: возвращает значение true, если строка не пустая, иначе false;
- • констант true и false: обращение к экземпляру класса дает значение true если
- строка является палиндромом, false – противном случае;
- • операции &: возвращает значение true, если строковые поля двух объектов
- посимвольно равны(без учета регистра), иначе false;
- • операции преобразования класса-строка в тип string (и наоборот).
- Продемонстрировать работу класса. */
- private string line;
- public StringLine(string line)//конструктор
- {
- this.line = line;
- }
- public void Show(string line)//вывести StringLine
- {
- Console.WriteLine("Строка: " + line);
- }
- public void GetCharLength()
- {
- Console.WriteLine(string.Join(", ", line.GroupBy(c => c).Where(g => g.Count() == 1).Select(g => g.Key)));
- Console.WriteLine(Regex.Matches(line, @"(.)\1*").Cast<Match>().OrderByDescending(m => m.Length).First().Value);
- }
- public void GetLettersСount()
- {
- char[] ch = line.ToCharArray();
- int figures = ch.Where((n) => n >= '0' && n <= '9').Count();
- int space = ch.Where((n) => n >= ' ' && n <= ' ').Count();
- Console.WriteLine($"Количество цифр: {figures}");
- Console.WriteLine($"Количество пробелов в строке: {space}");
- }
- public int Length
- {
- get
- {
- return line.Length;
- }
- }
- public char this[int i]
- {
- get
- {
- return line[i];
- }
- }
- // Перегрузка бинарного оператора " ! ": возвращает значение true, если строка не пустая, иначе false
- public static bool operator !(StringLine zero)
- {
- if (zero.line.Length != 0) return true;
- return false;
- }
- // Перегрузка констант true
- public static bool operator true(StringLine line)
- {
- int min = 0;
- int max = line.Length - 1;
- while (true)
- {
- if (min > max) return true;
- char a = line[min];
- char b = line[max];
- if (char.ToLower(a) != char.ToLower(b)) return false;
- min++;
- max--;
- }
- }
- // Перегрузка констант false
- public static bool operator false(StringLine line)
- {
- int min = 0;
- int max = line.Length - 1;
- while (true)
- {
- if (min < max) return false;
- char a = line[min];
- char b = line[max];
- if (char.ToLower(a) == char.ToLower(b)) return true;
- min++;
- max--;
- }
- }
- // Перегрузка операции &: возвращает значение true, если строковые поля двух объектов
- public static bool operator &(StringLine A, StringLine B)
- {
- if (A.line.ToUpper() == B.line.ToUpper()) return true;
- else return false;
- }
- // Операции преобразования StringLine в тип string
- public static implicit operator string(StringLine line)
- {
- return line.line;
- }
- // Операции преобразования string в тип StringLine
- public static implicit operator StringLine(string line)
- {
- return new StringLine(line);
- }
- }
- }
- class Program
- {
- static void Main()
- {
- string str1 = Console.ReadLine();
- StringLine s = new StringLine (str1);
- string str2 = Console.ReadLine();
- StringLine s2 = new StringLine(str2);
- s.GetCharLength();
- s.GetLettersСount();
- Console.WriteLine("Количество символов={0}",s.Length);
- Console.WriteLine("[0]элемент строки={0}",s[0]);
- if (!s)
- {
- Console.WriteLine("Не пустая строка");
- }
- else Console.WriteLine("Пустая строка");
- Console.Write("Введите 2 строку ->");
- if (s & s2)
- {
- Console.WriteLine("Два экземпляра равны");
- }
- else Console.WriteLine("Не равны.");
- if (s)
- {
- Console.WriteLine("Строка является палиндромом");
- }
- else Console.WriteLine("Не палиндром");
- }
- }
Add Comment
Please, Sign In to add comment