🗊Презентация Строки. Регулярные выражения

Нажмите для полного просмотра!
Строки. Регулярные выражения, слайд №1Строки. Регулярные выражения, слайд №2Строки. Регулярные выражения, слайд №3Строки. Регулярные выражения, слайд №4Строки. Регулярные выражения, слайд №5Строки. Регулярные выражения, слайд №6Строки. Регулярные выражения, слайд №7Строки. Регулярные выражения, слайд №8Строки. Регулярные выражения, слайд №9Строки. Регулярные выражения, слайд №10Строки. Регулярные выражения, слайд №11Строки. Регулярные выражения, слайд №12Строки. Регулярные выражения, слайд №13Строки. Регулярные выражения, слайд №14Строки. Регулярные выражения, слайд №15Строки. Регулярные выражения, слайд №16Строки. Регулярные выражения, слайд №17Строки. Регулярные выражения, слайд №18Строки. Регулярные выражения, слайд №19Строки. Регулярные выражения, слайд №20Строки. Регулярные выражения, слайд №21Строки. Регулярные выражения, слайд №22Строки. Регулярные выражения, слайд №23Строки. Регулярные выражения, слайд №24Строки. Регулярные выражения, слайд №25Строки. Регулярные выражения, слайд №26Строки. Регулярные выражения, слайд №27Строки. Регулярные выражения, слайд №28Строки. Регулярные выражения, слайд №29Строки. Регулярные выражения, слайд №30Строки. Регулярные выражения, слайд №31Строки. Регулярные выражения, слайд №32Строки. Регулярные выражения, слайд №33Строки. Регулярные выражения, слайд №34Строки. Регулярные выражения, слайд №35Строки. Регулярные выражения, слайд №36Строки. Регулярные выражения, слайд №37Строки. Регулярные выражения, слайд №38Строки. Регулярные выражения, слайд №39Строки. Регулярные выражения, слайд №40Строки. Регулярные выражения, слайд №41Строки. Регулярные выражения, слайд №42Строки. Регулярные выражения, слайд №43Строки. Регулярные выражения, слайд №44Строки. Регулярные выражения, слайд №45Строки. Регулярные выражения, слайд №46Строки. Регулярные выражения, слайд №47Строки. Регулярные выражения, слайд №48Строки. Регулярные выражения, слайд №49Строки. Регулярные выражения, слайд №50Строки. Регулярные выражения, слайд №51Строки. Регулярные выражения, слайд №52Строки. Регулярные выражения, слайд №53

Содержание

Вы можете ознакомиться и скачать презентацию на тему Строки. Регулярные выражения. Доклад-сообщение содержит 53 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





СТРОКИ. 
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Описание слайда:
СТРОКИ. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

Слайд 2





ОСНОВНЫЕ ВОПРОСЫ
Строки и класс System.String;
Операции со строками;
Форматирование и интерполяция строк;
Класс StringBuilder;
Регулярные выражения.
Описание слайда:
ОСНОВНЫЕ ВОПРОСЫ Строки и класс System.String; Операции со строками; Форматирование и интерполяция строк; Класс StringBuilder; Регулярные выражения.

Слайд 3





СТРОКИ И КЛАСС System.String
Довольно большое количество задач, которые могут встретиться при разработке приложений, так или иначе связано с обработкой строк - парсинг веб-страниц, поиск в тексте, какие-то аналитические задачи, связанные с извлечением нужной информации из текста и т.д. Поэтому в этом плане работе со строками уделяется особое внимание.
В языке C# строковые значения представляет тип string, а вся функциональность работы с данным типом сосредоточена в классе System.String. Собственно string является псевдонимом для класса System.String. Объекты этого класса представляют текст как последовательность символов Unicode. Максимальный размер объекта String может составлять в памяти 2 ГБ, или около 1 миллиарда символов.
Описание слайда:
СТРОКИ И КЛАСС System.String Довольно большое количество задач, которые могут встретиться при разработке приложений, так или иначе связано с обработкой строк - парсинг веб-страниц, поиск в тексте, какие-то аналитические задачи, связанные с извлечением нужной информации из текста и т.д. Поэтому в этом плане работе со строками уделяется особое внимание. В языке C# строковые значения представляет тип string, а вся функциональность работы с данным типом сосредоточена в классе System.String. Собственно string является псевдонимом для класса System.String. Объекты этого класса представляют текст как последовательность символов Unicode. Максимальный размер объекта String может составлять в памяти 2 ГБ, или около 1 миллиарда символов.

Слайд 4





СТРОКИ И КЛАСС System.String
Создание строк
Создавать сроки можно, как используя переменную типа string и присваивая ей значение, так и применяя один из конструкторов класса String:







Конструктор String имеет различное число версий. Так, вызов конструктора new String('a', 6) создаст строку "aaaaaa". И так как строка представляет ссылочный тип, то может хранить значение null.
Описание слайда:
СТРОКИ И КЛАСС System.String Создание строк Создавать сроки можно, как используя переменную типа string и присваивая ей значение, так и применяя один из конструкторов класса String: Конструктор String имеет различное число версий. Так, вызов конструктора new String('a', 6) создаст строку "aaaaaa". И так как строка представляет ссылочный тип, то может хранить значение null.

Слайд 5





СТРОКИ И КЛАСС System.String
Строка как набор символов
Так как строка хранит коллекцию символов, в ней определен индексатор для доступа к этим символам:


Применяя индексатор, мы можем обратиться к строке как к массиву символов и получить по индексу любой из ее символов:






Используя свойство Length, как и в обычном массиве, можно получить длину строки.
Описание слайда:
СТРОКИ И КЛАСС System.String Строка как набор символов Так как строка хранит коллекцию символов, в ней определен индексатор для доступа к этим символам: Применяя индексатор, мы можем обратиться к строке как к массиву символов и получить по индексу любой из ее символов: Используя свойство Length, как и в обычном массиве, можно получить длину строки.

Слайд 6





ОПЕРАЦИИ СО СТРОКАМИ
Конкатенация
Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat:







Метод Concat является статическим методом класса String, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Конкатенация Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat: Метод Concat является статическим методом класса String, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.

Слайд 7





ОПЕРАЦИИ СО СТРОКАМИ
Для объединения строк также может использоваться метод Join:










Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Для объединения строк также может использоваться метод Join: Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.

Слайд 8





ОПЕРАЦИИ СО СТРОКАМИ
Сравнение строк
Для сравнения строк применяется статический метод Compare:















Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0. В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Сравнение строк Для сравнения строк применяется статический метод Compare: Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0. В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.

Слайд 9





ОПЕРАЦИИ СО СТРОКАМИ
Поиск в строке
С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке:









Подобным образом действует метод LastIndexOf, только находит индекс последнего вхождения символа или подстроки в строку.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Поиск в строке С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке: Подобным образом действует метод LastIndexOf, только находит индекс последнего вхождения символа или подстроки в строку.

Слайд 10





ОПЕРАЦИИ СО СТРОКАМИ
Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith. Например, у нас есть задача удалить из папки все файлы с расширением exe:
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith. Например, у нас есть задача удалить из папки все файлы с расширением exe:

Слайд 11





ОПЕРАЦИИ СО СТРОКАМИ
Разделение строк
С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам:







Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода:


Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Разделение строк С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам: Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода: Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.

Слайд 12





ОПЕРАЦИИ СО СТРОКАМИ
Обрезка строки
Для обрезки начальных или концевых символов используется функция Trim:




Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов.
Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Обрезка строки Для обрезки начальных или концевых символов используется функция Trim: Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов. Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.

Слайд 13





ОПЕРАЦИИ СО СТРОКАМИ
Обрезать определенную часть строки позволяет функция Substring:










Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра - индекс начала обрезки и длину вырезаемой части строки.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Обрезать определенную часть строки позволяет функция Substring: Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра - индекс начала обрезки и длину вырезаемой части строки.

Слайд 14





ОПЕРАЦИИ СО СТРОКАМИ
Вставка
Для вставки одной строки в другую применяется функция Insert:






Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр - собственно подстрока.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Вставка Для вставки одной строки в другую применяется функция Insert: Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр - собственно подстрока.

Слайд 15





ОПЕРАЦИИ СО СТРОКАМИ
Удаление строк
Удалить часть строки помогает метод Remove:











Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр - сколько символов надо удалить.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Удаление строк Удалить часть строки помогает метод Remove: Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр - сколько символов надо удалить.

Слайд 16





ОПЕРАЦИИ СО СТРОКАМИ
Замена
Чтобы заменить один символ или подстроку на другую, применяется метод Replace:








Во втором случае применения функции Replace строка из одного символа "о" заменяется на пустую строку, то есть фактически удаляется из текста. Подобным способом легко удалять какой-то определенный текст в строках.
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Замена Чтобы заменить один символ или подстроку на другую, применяется метод Replace: Во втором случае применения функции Replace строка из одного символа "о" заменяется на пустую строку, то есть фактически удаляется из текста. Подобным способом легко удалять какой-то определенный текст в строках.

Слайд 17





ОПЕРАЦИИ СО СТРОКАМИ
Смена регистра
Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower():
Описание слайда:
ОПЕРАЦИИ СО СТРОКАМИ Смена регистра Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower():

Слайд 18





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование строк
При выводе строк в консоли с помощью метода Console.WriteLine мы можем применять форматирование вместо конкатенации:












В строке "Имя: {0} Возраст: {1}" на место {0} и {1} будут вставляться в порядке следования person.Name и person.Age
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Форматирование строк При выводе строк в консоли с помощью метода Console.WriteLine мы можем применять форматирование вместо конкатенации: В строке "Имя: {0} Возраст: {1}" на место {0} и {1} будут вставляться в порядке следования person.Name и person.Age

Слайд 19





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
То же самое мы можем сделать с помощью метода String.Format:



Метод Format принимает строку с плейсхолдерами типа {0}, {1} и т.д., а также набор аргументов, которые вставляются на место данных плейсхолдеров. В итоге генерируется новая строка.
В методе Format могут использоваться различные спецификаторы и описатели, которые позволяют настроить вывод данных. Рассмотрим основные описатели.
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК То же самое мы можем сделать с помощью метода String.Format: Метод Format принимает строку с плейсхолдерами типа {0}, {1} и т.д., а также набор аргументов, которые вставляются на место данных плейсхолдеров. В итоге генерируется новая строка. В методе Format могут использоваться различные спецификаторы и описатели, которые позволяют настроить вывод данных. Рассмотрим основные описатели.

Слайд 20





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Все используемые форматы:
C / c - Задает формат денежной единицы, указывает количество десятичных разрядов после запятой
D / d - Целочисленный формат, указывает минимальное количество цифр
E / e - Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой
F / f - Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после запятой
G / g - Задает более короткий из двух форматов: F или E
N / n - Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после запятой
P / p - Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов после запятой
X / x - Шестнадцатеричный формат числа
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Все используемые форматы: C / c - Задает формат денежной единицы, указывает количество десятичных разрядов после запятой D / d - Целочисленный формат, указывает минимальное количество цифр E / e - Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой F / f - Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после запятой G / g - Задает более короткий из двух форматов: F или E N / n - Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после запятой P / p - Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов после запятой X / x - Шестнадцатеричный формат числа

Слайд 21





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование валюты
Для форматирования валюты используется описатель "C":






Число после описателя указывает, сколько чисел будет использоваться после разделителя между целой и дробной частью. При выводе также добавляется обозначение денежного знака для текущей культуры компьютера.
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Форматирование валюты Для форматирования валюты используется описатель "C": Число после описателя указывает, сколько чисел будет использоваться после разделителя между целой и дробной частью. При выводе также добавляется обозначение денежного знака для текущей культуры компьютера.

Слайд 22





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование целых чисел
Для форматирования целочисленных значение применяется описатель "d":






Число после описателя указывает, сколько цифр будет в числовом значении. Если в исходном числе цифр меньше, то к нему добавляются нули.
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Форматирование целых чисел Для форматирования целочисленных значение применяется описатель "d": Число после описателя указывает, сколько цифр будет в числовом значении. Если в исходном числе цифр меньше, то к нему добавляются нули.

Слайд 23





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование дробных чисел
Для форматирования дробны чисел используется описатель F, число после которого указывает, сколько знаков будет использоваться после разделителя между целой и дробной частью. Если исходное число - целое, то к нему добавляются разделитель и нули.
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Форматирование дробных чисел Для форматирования дробны чисел используется описатель F, число после которого указывает, сколько знаков будет использоваться после разделителя между целой и дробной частью. Если исходное число - целое, то к нему добавляются разделитель и нули.

Слайд 24





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Формат процентов
Описатель "P" задает отображение процентов. Используемый с ним числовой спецификатор указывает, сколько знаков будет после запятой:



Настраиваемые форматы
Используя знак #, можно настроить формат вывода. Например, нам надо вывести некоторое число в формате телефона +х (ххх)ххх-хх-хх:
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Формат процентов Описатель "P" задает отображение процентов. Используемый с ним числовой спецификатор указывает, сколько знаков будет после запятой: Настраиваемые форматы Используя знак #, можно настроить формат вывода. Например, нам надо вывести некоторое число в формате телефона +х (ххх)ххх-хх-хх:

Слайд 25





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Метод ToString
Метод ToString() не только получает строковое описание объекта, но и может осуществлять форматирование. Он поддерживает те же описатели, что используются в методе Format:
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Метод ToString Метод ToString() не только получает строковое описание объекта, но и может осуществлять форматирование. Он поддерживает те же описатели, что используются в методе Format:

Слайд 26





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Интерполяция строк
Начиная с версии языка C# 6.0 (Visual Studio 2015) была добавлена такая функциональность, как интерполяция строк. Эта функциональность призвана заменить форматирование строк. Так, перепишем пример с выводом значений свойств объекта Person:




Знак доллара перед строкой указывает, что будет осуществляться интерполяция строк. Внутри строки опять же используются плейсхолдеры {...}, только внутри фигурных скобок уже можно напрямую писать те выражения, которые мы хотим вывести.
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Интерполяция строк Начиная с версии языка C# 6.0 (Visual Studio 2015) была добавлена такая функциональность, как интерполяция строк. Эта функциональность призвана заменить форматирование строк. Так, перепишем пример с выводом значений свойств объекта Person: Знак доллара перед строкой указывает, что будет осуществляться интерполяция строк. Внутри строки опять же используются плейсхолдеры {...}, только внутри фигурных скобок уже можно напрямую писать те выражения, которые мы хотим вывести.

Слайд 27





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Интерполяция по сути представляет более лаконичное форматирование. При этом внутри фигурных скобок мы можем указывать не только свойства, но и различные выражения языка C#:
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Интерполяция по сути представляет более лаконичное форматирование. При этом внутри фигурных скобок мы можем указывать не только свойства, но и различные выражения языка C#:

Слайд 28





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
В следующем примере проверяем, не равен ли person значению null. Если не равен, то выводим его имя, иначе выводим какое-нибудь имя по умолчанию:





Уже внутри строки можно применять форматирование. В этом случае мы можем применять все те же описатели, что и в методе Format. Например, выведем номер телефона в формате +x xxx-xxx-xx-xx:
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК В следующем примере проверяем, не равен ли person значению null. Если не равен, то выводим его имя, иначе выводим какое-нибудь имя по умолчанию: Уже внутри строки можно применять форматирование. В этом случае мы можем применять все те же описатели, что и в методе Format. Например, выведем номер телефона в формате +x xxx-xxx-xx-xx:

Слайд 29





ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК
Добавляем пространство до и после форматируемого вывода:



Вывод:
Описание слайда:
ФОРМАТИРОВАНИЕ И ИНТЕРПОЛЯЦИЯ СТРОК Добавляем пространство до и после форматируемого вывода: Вывод:

Слайд 30





КЛАСС StringBuilder
Хотя класс System.String предоставляет нам широкую функциональность по работе со строками, все таки он имеет свои недостатки. Прежде всего, объект String представляет собой неизменяемую строку. Когда мы выполняем какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места. Удаление первого символа - не самая затратная операция. Однако когда подобных операций множество, а объем текста, для которого надо выполнить данные операции, также не самый маленький, то издержки при потере производительности становятся более существенными.
Чтобы выйти из этой ситуации во фреймворк .NET был добавлен новый класс StringBuilder, который находится в пространстве имен System.Text. Этот класс представляет динамическую строку.
Описание слайда:
КЛАСС StringBuilder Хотя класс System.String предоставляет нам широкую функциональность по работе со строками, все таки он имеет свои недостатки. Прежде всего, объект String представляет собой неизменяемую строку. Когда мы выполняем какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места. Удаление первого символа - не самая затратная операция. Однако когда подобных операций множество, а объем текста, для которого надо выполнить данные операции, также не самый маленький, то издержки при потере производительности становятся более существенными. Чтобы выйти из этой ситуации во фреймворк .NET был добавлен новый класс StringBuilder, который находится в пространстве имен System.Text. Этот класс представляет динамическую строку.

Слайд 31





КЛАСС StringBuilder
При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке:




Теперь переменная sb представляет начальную строку "Привет мир". Эта строка имеет длину в 10 символов. Для хранения длины в классе StringBuilder есть свойство Length. Однако есть и вторая величина - емкость выделенной памяти. Это значение хранится в свойстве Capacity. Емкость - это выделенная память под объект. Хотя в данном случае длина равна 10 символов, но реально емкость будет составлять по умолчанию 16 символов.
Описание слайда:
КЛАСС StringBuilder При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке: Теперь переменная sb представляет начальную строку "Привет мир". Эта строка имеет длину в 10 символов. Для хранения длины в классе StringBuilder есть свойство Length. Однако есть и вторая величина - емкость выделенной памяти. Это значение хранится в свойстве Capacity. Емкость - это выделенная память под объект. Хотя в данном случае длина равна 10 символов, но реально емкость будет составлять по умолчанию 16 символов.

Слайд 32





КЛАСС StringBuilder
Класс StringBuilder имеет еще ряд конструкторов, которые позволяют разными способами выполнить начальную инициализацию объекта. Так, мы можем задать пустой объект, но установить начальную емкость:



Если у нас заранее известен максимальный размер объекта, то мы можем таким образом сразу задать емкость и избежать последующих издержек при дополнительном выделении памяти.
Описание слайда:
КЛАСС StringBuilder Класс StringBuilder имеет еще ряд конструкторов, которые позволяют разными способами выполнить начальную инициализацию объекта. Так, мы можем задать пустой объект, но установить начальную емкость: Если у нас заранее известен максимальный размер объекта, то мы можем таким образом сразу задать емкость и избежать последующих издержек при дополнительном выделении памяти.

Слайд 33





КЛАСС StringBuilder
Теперь посмотрим на примере использование и преимущества класса StringBuilder:













При создании объекта StringBuilder выделяется память по умолчанию для 16 символов, так как длина начальной строки меньше 16.
Описание слайда:
КЛАСС StringBuilder Теперь посмотрим на примере использование и преимущества класса StringBuilder: При создании объекта StringBuilder выделяется память по умолчанию для 16 символов, так как длина начальной строки меньше 16.

Слайд 34





КЛАСС StringBuilder
Дальше применяется метод Append - этот метод добавляет к строке подстроку. Так как при объединении строк их общая длина - 22 символа - превышает начальную емкость в 16 символов, то начальная емкость удваивается - до 32 символов.
Если бы итоговая длина строки была бы больше 
32 символов, то емкость расширялась бы до размера длины строки.
Далее опять применяется метод Append, однако финальная длина уже будет 28 символов, что меньше 32 символов, и дополнительная память не будет выделяться.
Описание слайда:
КЛАСС StringBuilder Дальше применяется метод Append - этот метод добавляет к строке подстроку. Так как при объединении строк их общая длина - 22 символа - превышает начальную емкость в 16 символов, то начальная емкость удваивается - до 32 символов. Если бы итоговая длина строки была бы больше 32 символов, то емкость расширялась бы до размера длины строки. Далее опять применяется метод Append, однако финальная длина уже будет 28 символов, что меньше 32 символов, и дополнительная память не будет выделяться.

Слайд 35





КЛАСС StringBuilder
Кроме метода Append класс StringBuilder предлагает еще ряд методов для операций над строками:
Insert: вставляет подстроку в объект StringBuilder, начиная с определенного индекса
Remove: удаляет определенное количество символов, начиная с определенного индекса
Replace: заменяет все вхождения определенного символа или подстроки на другой символ или подстроку
AppendFormat: добавляет подстроку в конец объекта StringBuilder
Описание слайда:
КЛАСС StringBuilder Кроме метода Append класс StringBuilder предлагает еще ряд методов для операций над строками: Insert: вставляет подстроку в объект StringBuilder, начиная с определенного индекса Remove: удаляет определенное количество символов, начиная с определенного индекса Replace: заменяет все вхождения определенного символа или подстроки на другой символ или подстроку AppendFormat: добавляет подстроку в конец объекта StringBuilder

Слайд 36





КЛАСС StringBuilder
Используем методы StringBuilder:
Описание слайда:
КЛАСС StringBuilder Используем методы StringBuilder:

Слайд 37





КЛАСС StringBuilder
Когда надо использовать класс String, а когда StringBuilder?
Microsoft рекомендует использовать класс String в следующих случаях:
При небольшом количестве операций и изменений над строками
При выполнении фиксированного количества операций объединения. В этом случае компилятор может объединить все операции объединения в одну
Когда надо выполнять масштабные операции поиска при построении строки, например IndexOf или StartsWith. Класс StringBuilder не имеет подобных методов.
Класс StringBuilder рекомендуется использовать в следующих случаях:
При неизвестном количестве операций и изменений над строками во время выполнения программы
Когда предполагается, что приложению придется сделать множество подобных операций
Описание слайда:
КЛАСС StringBuilder Когда надо использовать класс String, а когда StringBuilder? Microsoft рекомендует использовать класс String в следующих случаях: При небольшом количестве операций и изменений над строками При выполнении фиксированного количества операций объединения. В этом случае компилятор может объединить все операции объединения в одну Когда надо выполнять масштабные операции поиска при построении строки, например IndexOf или StartsWith. Класс StringBuilder не имеет подобных методов. Класс StringBuilder рекомендуется использовать в следующих случаях: При неизвестном количестве операций и изменений над строками во время выполнения программы Когда предполагается, что приложению придется сделать множество подобных операций

Слайд 38





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Классы StringBuilder и String предоставляют достаточную функциональность для работы со строками. Однако .NET предлагает еще один мощный инструмент - регулярные выражения. Регулярные выражения представляют эффективный и гибкий метод по обработке больших текстов, позволяя в то же время существенно уменьшить объемы кода по сравнению с использованием стандартных операций со строками.
Основная функциональность регулярных выражений в .NET сосредоточена в пространстве имен System.Text.RegularExpressions. А центральным классом при работе с регулярными выражениями является класс Regex.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Классы StringBuilder и String предоставляют достаточную функциональность для работы со строками. Однако .NET предлагает еще один мощный инструмент - регулярные выражения. Регулярные выражения представляют эффективный и гибкий метод по обработке больших текстов, позволяя в то же время существенно уменьшить объемы кода по сравнению с использованием стандартных операций со строками. Основная функциональность регулярных выражений в .NET сосредоточена в пространстве имен System.Text.RegularExpressions. А центральным классом при работе с регулярными выражениями является класс Regex.

Слайд 39





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Например, у нас есть некоторый текст и нам надо найти в нем все словоформы какого-нибудь слова. С классом Regex это сделать очень просто:
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Например, у нас есть некоторый текст и нам надо найти в нем все словоформы какого-нибудь слова. С классом Regex это сделать очень просто:

Слайд 40





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Здесь мы находим в искомой строке все словоформы слова "туп". В конструктор объекта Regex передается регулярное выражение для поиска. Далее мы разберем некоторые элементы синтаксиса регулярных выражений, а пока достаточно знать, что выражение туп(\w*) обозначает, найти все слова, которые имеют корень "туп" и после которого может стоять различное количество символов. Выражение \w означает алфавитно-цифровой символ, а звездочка после выражения указывает на неопределенное их количество - их может быть один, два, три или вообще не быть.
Метод Matches класса Regex принимает строку, к которой надо применить регулярные выражения, и возвращает коллекцию найденных совпадений.
Каждый элемент такой коллекции представляет объект Match. Его свойство Value возвращает найденное совпадение.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Здесь мы находим в искомой строке все словоформы слова "туп". В конструктор объекта Regex передается регулярное выражение для поиска. Далее мы разберем некоторые элементы синтаксиса регулярных выражений, а пока достаточно знать, что выражение туп(\w*) обозначает, найти все слова, которые имеют корень "туп" и после которого может стоять различное количество символов. Выражение \w означает алфавитно-цифровой символ, а звездочка после выражения указывает на неопределенное их количество - их может быть один, два, три или вообще не быть. Метод Matches класса Regex принимает строку, к которой надо применить регулярные выражения, и возвращает коллекцию найденных совпадений. Каждый элемент такой коллекции представляет объект Match. Его свойство Value возвращает найденное совпадение.

Слайд 41





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Параметр RegexOptions
Класс Regex имеет ряд конструкторов, позволяющих выполнить начальную инициализацию объекта. Две версии конструкторов в качестве одного из параметров принимают перечисление RegexOptions. Некоторые из значений, принимаемых данным перечислением:
Compiled: при установке этого значения регулярное выражение компилируется в сборку, что обеспечивает более быстрое выполнение
CultureInvariant: при установке этого значения будут игнорироваться региональные различия
IgnoreCase: при установке этого значения будет игнорироваться регистр
IgnorePatternWhitespace: удаляет из строки пробелы и разрешает комментарии, начинающиеся со знака #
Multiline: указывает, что текст надо рассматривать в многострочном режиме. При таком режиме символы "^" и "$" совпадают, соответственно, с началом и концом любой строки, а не с началом и концом всего текста
RightToLeft: приписывает читать строку справа налево
Singleline: устанавливает однострочный режим, а весь текст рассматривается как одна строка
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Параметр RegexOptions Класс Regex имеет ряд конструкторов, позволяющих выполнить начальную инициализацию объекта. Две версии конструкторов в качестве одного из параметров принимают перечисление RegexOptions. Некоторые из значений, принимаемых данным перечислением: Compiled: при установке этого значения регулярное выражение компилируется в сборку, что обеспечивает более быстрое выполнение CultureInvariant: при установке этого значения будут игнорироваться региональные различия IgnoreCase: при установке этого значения будет игнорироваться регистр IgnorePatternWhitespace: удаляет из строки пробелы и разрешает комментарии, начинающиеся со знака # Multiline: указывает, что текст надо рассматривать в многострочном режиме. При таком режиме символы "^" и "$" совпадают, соответственно, с началом и концом любой строки, а не с началом и концом всего текста RightToLeft: приписывает читать строку справа налево Singleline: устанавливает однострочный режим, а весь текст рассматривается как одна строка

Слайд 42





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Например:


При необходимости можно установить несколько параметров:
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Например: При необходимости можно установить несколько параметров:

Слайд 43





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Синтаксис регулярных выражений
Рассмотрим вкратце некоторые элементы синтаксиса регулярных выражений:
^: соответствие должно начинаться в начале строки (например, выражение @"^пр\w*" соответствует слову "привет" в строке "привет мир")
$: конец строки (например, выражение @"\w*ир$" соответствует слову "мир" в строке "привет мир", так как часть "ир" находится в самом конце)
.: знак точки определяет любой одиночный символ (например, выражение "м.р" соответствует слову "мир" или "мор")
*: предыдущий символ повторяется 0 и более раз
+: предыдущий символ повторяется 1 и более раз
?: предыдущий символ повторяется 0 или 1 раз
\s: соответствует любому пробельному символу
\S: соответствует любому символу, не являющемуся пробелом

\w: соответствует любому алфавитно-цифровому символу

\W: соответствует любому не алфавитно-цифровому символу

\d: соответствует любой десятичной цифре

\D : соответствует любому символу, не являющемуся десятичной цифрой
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Синтаксис регулярных выражений Рассмотрим вкратце некоторые элементы синтаксиса регулярных выражений: ^: соответствие должно начинаться в начале строки (например, выражение @"^пр\w*" соответствует слову "привет" в строке "привет мир") $: конец строки (например, выражение @"\w*ир$" соответствует слову "мир" в строке "привет мир", так как часть "ир" находится в самом конце) .: знак точки определяет любой одиночный символ (например, выражение "м.р" соответствует слову "мир" или "мор") *: предыдущий символ повторяется 0 и более раз +: предыдущий символ повторяется 1 и более раз ?: предыдущий символ повторяется 0 или 1 раз \s: соответствует любому пробельному символу \S: соответствует любому символу, не являющемуся пробелом \w: соответствует любому алфавитно-цифровому символу \W: соответствует любому не алфавитно-цифровому символу \d: соответствует любой десятичной цифре \D : соответствует любому символу, не являющемуся десятичной цифрой

Слайд 44





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
\w: соответствует любому алфавитно-цифровому символу

\W: соответствует любому не алфавитно-цифровому символу

\d: соответствует любой десятичной цифре

\D : соответствует любому символу, не являющемуся десятичной цифрой
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ \w: соответствует любому алфавитно-цифровому символу \W: соответствует любому не алфавитно-цифровому символу \d: соответствует любой десятичной цифре \D : соответствует любому символу, не являющемуся десятичной цифрой

Слайд 45





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
\w: соответствует любому алфавитно-цифровому символу

\W: соответствует любому не алфавитно-цифровому символу

\d: соответствует любой десятичной цифре

\D : соответствует любому символу, не являющемуся десятичной цифрой

Это только небольшая часть элементов. Более подробное описание синтаксиса регулярных выражений можно найти на msdn в статье Элементы языка регулярных выражений — краткий справочник:
https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/regular-expression-language-quick-reference
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ \w: соответствует любому алфавитно-цифровому символу \W: соответствует любому не алфавитно-цифровому символу \d: соответствует любой десятичной цифре \D : соответствует любому символу, не являющемуся десятичной цифрой Это только небольшая часть элементов. Более подробное описание синтаксиса регулярных выражений можно найти на msdn в статье Элементы языка регулярных выражений — краткий справочник: https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/regular-expression-language-quick-reference

Слайд 46





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Теперь посмотрим на некоторые примеры использования. Возьмем первый пример с скороговоркой "Бык тупогуб, тупогубенький бычок, у быка губа бела была тупа" и найдем в ней все слова, где встречается корень "губ":



Так как выражение \w* соответствует любой последовательности алфавитно-цифровых символов любой длины, то данное выражение найдет все слова, содержащие корень "губ".
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Теперь посмотрим на некоторые примеры использования. Возьмем первый пример с скороговоркой "Бык тупогуб, тупогубенький бычок, у быка губа бела была тупа" и найдем в ней все слова, где встречается корень "губ": Так как выражение \w* соответствует любой последовательности алфавитно-цифровых символов любой длины, то данное выражение найдет все слова, содержащие корень "губ".

Слайд 47





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Второй простенький пример - нахождение телефонного номера в формате 111-111-1111:



Если мы точно знаем, сколько определенных символов должно быть, то мы можем явным образом указать их количество в фигурных скобках: \d{3} - то есть в данном случае три цифры.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Второй простенький пример - нахождение телефонного номера в формате 111-111-1111: Если мы точно знаем, сколько определенных символов должно быть, то мы можем явным образом указать их количество в фигурных скобках: \d{3} - то есть в данном случае три цифры.

Слайд 48





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Мы можем не только задать поиск по определенным типам символов - пробелы, цифры, но и задать конкретные символы, которые должны входить в регулярное выражение. Например, перепишем пример с номером телефона и явно укажем, какие символы там должны быть:




В квадратных скобках задается диапазон символов, которые должны в данном месте встречаться. В итоге данный и предыдущий шаблоны телефонного номера будут эквивалентны.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Мы можем не только задать поиск по определенным типам символов - пробелы, цифры, но и задать конкретные символы, которые должны входить в регулярное выражение. Например, перепишем пример с номером телефона и явно укажем, какие символы там должны быть: В квадратных скобках задается диапазон символов, которые должны в данном месте встречаться. В итоге данный и предыдущий шаблоны телефонного номера будут эквивалентны.

Слайд 49





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Также можно задать диапазон для алфавитных символов: 
Regex regex = new Regex("[a-v]{5}"); 
- данное выражение будет соответствовать любому сочетанию пяти символов, в котором все символы находятся в диапазоне от a до v.
Можно также указать отдельные значения: 
Regex regex = new Regex(@"[2]*-[0-9]{3}-\d{4}");. 
Это выражение будет соответствовать, например, такому номеру телефона "222-222-2222" (так как первые числа двойки)
С помощью операции | можно задать альтернативные символы: 
Regex regex = new Regex(@"[2|3]{3}-[0-9]{3}-\d{4}");. 
То есть первые три цифры могут содержать только двойки или тройки. Такой шаблон будет соответствовать, например, строкам "222-222-2222" и "323-435-2318". А вот строка "235-435-2318" уже не подпадает под шаблон, так как одной из трех первых цифр является цифра 5.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Также можно задать диапазон для алфавитных символов: Regex regex = new Regex("[a-v]{5}"); - данное выражение будет соответствовать любому сочетанию пяти символов, в котором все символы находятся в диапазоне от a до v. Можно также указать отдельные значения: Regex regex = new Regex(@"[2]*-[0-9]{3}-\d{4}");. Это выражение будет соответствовать, например, такому номеру телефона "222-222-2222" (так как первые числа двойки) С помощью операции | можно задать альтернативные символы: Regex regex = new Regex(@"[2|3]{3}-[0-9]{3}-\d{4}");. То есть первые три цифры могут содержать только двойки или тройки. Такой шаблон будет соответствовать, например, строкам "222-222-2222" и "323-435-2318". А вот строка "235-435-2318" уже не подпадает под шаблон, так как одной из трех первых цифр является цифра 5.

Слайд 50





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Итак, у нас такие символы, как *, + и ряд других используются в качестве специальных символов. И возникает вопрос, а что делать, если у нам надо найти, строки, где содержится точка, звездочка или какой-то другой специальный символ? В этом случае нам надо просто экранировать эти символы слешем:
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Итак, у нас такие символы, как *, + и ряд других используются в качестве специальных символов. И возникает вопрос, а что делать, если у нам надо найти, строки, где содержится точка, звездочка или какой-то другой специальный символ? В этом случае нам надо просто экранировать эти символы слешем:

Слайд 51





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Проверка на соответствие строки формату
Нередко возникает задача проверить корректность данных, введенных пользователем. Это может быть проверка электронного адреса, номера телефона, Класс Regex предоставляет статический метод IsMatch, который позволяет проверить входную строку с шаблоном на соответствие:
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Проверка на соответствие строки формату Нередко возникает задача проверить корректность данных, введенных пользователем. Это может быть проверка электронного адреса, номера телефона, Класс Regex предоставляет статический метод IsMatch, который позволяет проверить входную строку с шаблоном на соответствие:

Слайд 52





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ











Переменная pattern задает регулярное выражение для проверки адреса электронной почты. Данное выражение предлагает нам Microsoft на страницах msdn.
Для проверки соответствия строки шаблону используется метод IsMatch: 
Regex.IsMatch(email, pattern, RegexOptions.IgnoreCase). Последний параметр указывает, что регистр можно игнорировать. И если введенная строка соответствует шаблону, то метод возвращает true.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Переменная pattern задает регулярное выражение для проверки адреса электронной почты. Данное выражение предлагает нам Microsoft на страницах msdn. Для проверки соответствия строки шаблону используется метод IsMatch: Regex.IsMatch(email, pattern, RegexOptions.IgnoreCase). Последний параметр указывает, что регистр можно игнорировать. И если введенная строка соответствует шаблону, то метод возвращает true.

Слайд 53





РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Замена и метод Replace
Класс Regex имеет метод Replace, который позволяет заменить строку, соответствующую регулярному выражению, другой строкой:







Данная версия метода Replace принимает два параметра: строку с текстом, где надо выполнить замену, и сама строка замены. Так как в качестве шаблона выбрано выражение "\s+ (то есть наличие одного и более пробелов), метод Replace проходит по всему тексту и заменяет несколько подряд идущих пробелов ординарными.
Описание слайда:
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ Замена и метод Replace Класс Regex имеет метод Replace, который позволяет заменить строку, соответствующую регулярному выражению, другой строкой: Данная версия метода Replace принимает два параметра: строку с текстом, где надо выполнить замену, и сама строка замены. Так как в качестве шаблона выбрано выражение "\s+ (то есть наличие одного и более пробелов), метод Replace проходит по всему тексту и заменяет несколько подряд идущих пробелов ординарными.



Похожие презентации
Mypresentation.ru
Загрузить презентацию