Слайд 3
Символьный тип char предназначен для хранения символов в кодировке Unicode.
Символьный тип относится к встроенным типам данных C# и
соответствует стандартному классу Char библиотеки .NET из пространства имен System. В этом классе определены статические методы, позволяющие задать вид и категорию символа, а также преобразовать символ в верхний или нижний регистр и в число. Некоторые методы приведены в
Символы
Слайд 4
Некоторые методы класса System.Char
Слайд 6
Массивы символов
Массив символов, как и массив любого иного
типа, построен на основе базового класса Array
Листинг
Слайд 7
Тип string предназначен для работы со строками символов
в кодировке Unicode. Ему соответствует базовый класс System.String библиотеки
.NET.
Создание строки:
string s; // инициализация отложена
string t = "qqq"; // инициализация строковым литералом
string u = new string(' ', 20); // с пом. конструктора
string v = new string( a ); // создание из массива символов
// создание массива символов: char[] a = { '0', '0', '0' };
Строки типа string
Слайд 8
Операции для строк
присваивание (=);
проверка на равенство (==);
проверка на
неравенство (!=);
обращение по индексу ([]);
сцепление (конкатенация) строк (+).
Строки равны,
если имеют одинаковое количество символов и совпадают посимвольно.
Обращаться к отдельному элементу строки по индексу можно только для получения значения, но не для его изменения. Это связано с тем, что строки типа string относятся к неизменяемым типам данных.
Методы, изменяющие содержимое строки, на самом деле создают новую копию строки. Неиспользуемые «старые» копии автоматически удаляются сборщиком мусора.
Слайд 9
Некоторые элементы класса System.String
Слайд 12
Пример форматирования строк
double a = 12.234;
int b =
29;
Console.WriteLine( " a = {0,6:C} b = {1,2:X}", a,
b ); //4
Console.WriteLine( " a = {0,6:0.##} b = {1,5:0.# ' руб. '}", a, b); //5
Console.WriteLine(" a = {0:F3} b = {1:D3}", a, b);
Console.WriteLine( " a = " + a.ToString("C"));
a = 12,23p. b = 1D
a = 12,23 b = 29 руб.
a = 12,234 b = 029
a = 12,23p.
{n[,m][:спецификатор_формата[число]]}
Слайд 13
Спецификаторы формата для строк
Слайд 14
пользовательские шаблоны форматирования.
Слайд 15
Пустые строки и строки null
Пустая строка — экземпляр
объекта System.String, содержащий 0 символов:
string s = "";
Для пустых строк можно вызывать методы.
Строки со значениями null, напротив, не ссылаются на экземпляр объекта System.String, попытка вызвать метод для строки null вызовет исключение NullReferenceException. Однако строки null можно использовать в операциях объединения и сравнения с другими строками.
Слайд 16
Строки типа StringBuilder
Класс StringBuilder определен в пространстве
имен System.Text. Позволяет изменять значение своих экземпляров.
При создании экземпляра
обязательно использовать операцию new и конструктор, например:
StringBuilder a = new StringBuilder(); // 1
StringBuilder b = new StringBuilder( "qwerty" ); // 2
StringBuilder c = new StringBuilder( 100 ); // 3
StringBuilder d = new StringBuilder( "qwerty", 100 ); // 4
StringBuilder e = new StringBuilder( "qwerty", 1, 3, 100 );// 5
Конкатенация 50000 string ~ 1 мин., StringBuilder ~ 1 сек.
Слайд 17
Основные элементы класса System.Text.StringBuilder
Слайд 19
Регулярные выражения
Регулярное выражение — шаблон (образец), по которому выполняется
поиск соответствующего ему фрагмента текста.
тег html:
<[^>]+>
российский номер автомобиля:
[A-Z]\d{3}[A-Z]{2}\d\dRUS
IP-адрес:
\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?
Регулярные выражения предназначены для обработки текстовой информации и обеспечивают:
эффективный поиск в тексте по заданному шаблону;
редактирование, замену и удаление подстрок;
формирование итоговых отчетов по результатам работы с текстом.
Слайд 20
Язык описания регулярных выражений
Язык описания регулярных выражений состоит
из символов двух видов: обычных и метасимволов.
Обычный символ представляет
в выражении сам себя.
Метасимвол:
класс символов (например, любая цифра \d или буква \w)
уточняющий символ (например, ^).
повторитель (например, +).
Примеры:
выражение для поиска в тексте фрагмента «Вася» записывается с помощью четырех обычных символов «Вася»
выражение для поиска двух цифр, идущих подряд, состоит из двух метасимволов «\d\d»
выражение для поиска фрагментов вида «Вариант 1», «Вариант 2», …, «Вариант 9» имеет вид «Вариант \d»
выражение для поиска фрагментов вида «Вариант 1», «Вариант 23», «Вариант 719», …, имеет вид «Вариант \d+»
Слайд 23
Уточняющие (якорные) метасимволы
Слайд 25
Примеры простых регулярных выражений
целое число (возможно, со
знаком):
[-+]?\d+
вещественное число (может иметь знак и дробную
часть, отделенную точкой):
[-+]?\d+\.?\d*
российский номер автомобиля (упрощенно):
[A-Z]\d{3}[A-Z]{2}\d\dRUS
ip-адрес (упрощенно):
(\d{1,3}\.){3}\d{1,3}
Слайд 26
Поддержка регулярных выражений в .NET
Для поддержки регулярных выражений
в библиотеку .NET включены классы, объединенные в пространство имен
System.Text.RegularExpressions.
Основной класс – Regex. Он реализует подсистему обработки регулярных выражений.
Подсистеме требуется предоставить:
Шаблон (регулярное выражение), соответствия которому требуется найти в тексте.
Текст, который требуется проанализировать с помощью шаблона.
См.:
http://msdn.microsoft.com/ru-ru/library/hs600312.aspx?ppud=4
Слайд 27
Использование класса Regex
Обработчик регулярных выражений выполняет синтаксический разбор
и компиляцию регулярного выражения, а также операции, сопоставляющие шаблон
регулярного выражения с входной строкой.
Обработчик можно использовать одним из двух способов:
С помощью вызова статических методов класса Regex. Параметры метода содержат входную строку и шаблон регулярного выражения.
С помощью создания объекта Regex посредством передачи регулярного выражения в конструктор класса.
Слайд 28
Методы класса Regex
позволяют выполнять следующие действия:
Определить,
встречается ли во входном тексте шаблон регулярного выражения (метод
IsMatch).
Извлечь из текста одно или все вхождения, соответствующие шаблону регулярного выражения (методы Match или Matches).
Заменить текст, соответствующий шаблону регулярного выражения (метод Replace).
Разделить строку на массив строк (метод Split).
Слайд 29
Пример использования Regex.IsMatch
using System;
using System.Text.RegularExpressions;
public class
Example
{ public static void Main()
{ string[]
values = { "111-22-3333", "111-2-3333"};
string pattern = @"^\d{3}-\d{2}-\d{4}$";
foreach (string value in values)
{ if (Regex.IsMatch(value, pattern))
Console.WriteLine("{0} is a valid SSN.", value);
else Console.WriteLine("{0}: Invalid", value);
} } }
// Вывод:
// 111-22-3333 is a valid SSN.
// 111-2-3333: Invalid
Слайд 30
Пример использования Regex.Matches
// совпадения со строкой "abc" во
входной строке
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{ string pattern = "abc";
string input = "abc123abc456abc789";
foreach (Match match in Regex.Matches(input, pattern))
Console.WriteLine("{0} found at position {1}.",
match.Value, match.Index);
} }
//Вывод:
// abc found at position 0.
// abc found at position 6.
// abc found at position 12.