Слайды и текст доклада
Pic.1
Технология программировния Строки
Pic.2
Работа с текстом В языке C# имеется много различных инструментов для работы с текстом Встроенные типы данных – char и string Классы из стандартной библиотеки – StringBuilder Классы для работы с …
Pic.3
Отдельные символы Фреймворк . NET содержит специальный класс для работы с отдельными символами – System. Char Использует UTF-16 для хранения одной буквы, таким образом символ занимает 2 байта В C# …
Pic.4
Отдельные символы char ch = 'A'; WriteLine(ch); ch = '\x5A'; WriteLine(ch); ch = '\u0058'; WriteLine(ch);
Pic.5
Отдельные символы char ch = new Char(); ch = (char)65; WriteLine(ch); int code = ch; WriteLine(code); string s = ch. ToString() + " = " + code; WriteLine(s);
Pic.6
Отдельные символы Цифры и буквы алфавитов обычно кодируются интервалами: 0 - 9 соответствует интервал [65, 90] A - Z соответствует интервал [65, 90] a - z соответствует интервал [97, 122] А - Я …
Pic.7
Отдельные символы Класс char содержит достаточно много собственных методов. Большая часть из них используется для определения типа символа. IsDigit – проверка на десятичную цифру IsLetter – проверка …
Pic.8
Отдельные символы В общем случае тип символа можно получить при помощи метода GetUnicodeCategory. Он возвращает одну из категорий, описанных в перечислении UnicodeCategory из пространства имен …
Pic.9
Отдельные символы WriteLine("GetUnicodeCategory:"); var c1 = char. GetUnicodeCategory('A'); var c2 = char. GetUnicodeCategory(';'); WriteLine("'A' - …
Pic.11
Отдельные символы WriteLine("Метод IsLetter:"); WriteLine("'z' - IsLetter - {0}", char. IsLetter('z')); WriteLine("'Я' - IsLetter - {0}", …
Pic.12
Отдельные символы WriteLine("Метод IsSeparator:"); WriteLine("' ' - IsSeparator - {0}", char. IsSeparator(' ')); WriteLine("';' - IsSeparator - …
Pic.13
Отдельные символы ToLower – приводит символ к нижнему регистру ToUpper – приводит символ к верхнему регистру CompareTo – сравнивает два символа и возвращает разницу между их кодами
Pic.14
Массив символов По аналогии с языками С и С++ мы можем представить строку в виде массива символов. Особого смысла это не имеет, т. к. у нас уже есть тип string, но может быть полезно для понимания …
Pic.15
Массив символов char[] text = new [] {'H','e','l','l','o'}; for (int i = 0; i < text. Length; ++i) { if (char. IsLower(text[i])) { text[i] = char. …
Pic.16
Массив символов Стандартный класс string внутри представлен в виде массива символов. Поэтому у него есть стандартный метод для его получения – ToCharArray
Pic.17
Массив символов static int IndexOf(char[] text1, char[] text2) { for (int i = 0; i < text1. Length; ++i) { bool isFound = true; for (int j = 0; j < text2. Length; ++j) { if (i + j >= text1. …
Pic.18
Массив символов char[] text1 = "Progress". ToCharArray(); char[] text2 = "ogre". ToCharArray(); int index = IndexOf(text1, text2); if (index >= 0) { for (int i = 0; i < …
Pic.19
Строки string Строки можно создавать при помощи строковых констант или конструктора string. Конструктор имеет много вариантов, но наиболее полезными являются: Создание строки из символа, повторенного …
Pic.20
Строки string string hello = "Hello"; string separator = new string('-', 5); char[] array = hello. ToCharArray(); string fromArray = new string(array); string strye = new …
Pic.21
Строки string В C# существуют два вида строковых констант: Обычные константы, которые представляют строку символов, заключенную в кавычки Константы с предшествующим знаком @.
Pic.22
Строки string Обычные строковые константы могут содержать управляющие последовательности - \n, \t, \r и т. д. В @-константах все символы трактуются в полном соответствии с их изображением. Символ …
Pic.23
Строки string WriteLine("\x50"); WriteLine(@"\x50"""); WriteLine("c:\folder\folder\file. txt"); WriteLine(@"c:\folder\folder\file. txt"); …
Pic.24
Строки string Над строками определены следующие операции: Присваивание = Строки являются ссылочным типом. Если есть две строки s1 и s2, то в результате выполнения выражения s2 = s1 произойдет …
Pic.25
Строки string string s1 = "ABC", s2 = "DEF"; string s3 = s1 + s2; string s4 = "ABCDEF"; WriteLine(s3); WriteLine("s3 == s4 ? {0}", s3 == s4); …
Pic.26
Методы класса string Compare – cравнение двух строк. Различные варианты метода позволяют сравнивать как строки, так и подстроки. При этом можно учитывать или не учитывать регистр, особенности …
Pic.27
Методы класса string Concat – конкатенация строк. Допускает сцепление произвольного числа строк Copy – создается копия строки Format – выполняет форматирование в соответствии с заданными …
Pic.28
Методы класса string Join – конкатенация массива строк в единую строку. При этом между элементами массива вставляются разделители Split – осуществляет разделение строки на элементы
Pic.29
Методы класса string var txt = "А это пшеница, которая в темном" + "чулане хранится," + " в доме, который построил Джек!"; WriteLine(txt);
Pic.30
Методы класса string string[] sentences = txt. Split(','); for (int i = 0; i < sentences. Length; i++) { WriteLine("sentences[{0}] = {1}", i, sentences[i]); } WriteLine();
Pic.31
Методы класса string string join = string. Join(",", sentences); WriteLine("join = {0}", join); WriteLine();
Pic.32
Методы класса string WriteLine(); string[] words = txt. Split(' '); for (int i = 0; i < words. Length; i++) { WriteLine("words[{0}] = {1}", i, words[i]); } WriteLine();
Pic.33
Методы класса string join = string. Join(" ", words); WriteLine("join = {0}", join); WriteLine();
Pic.34
Методы класса string Методы Split и Join хорошо работают, когда при разборе используется только один разделитель. В этом случае сборка действительно является обратной операцией и позволяет …
Pic.35
Методы класса string Insert – вставляет подстроку в заданную позицию Remove – удаляет подстроку в заданной позиции Replace – заменяет подстроку в заданной позиции на новую подстроку Substring – …
Pic.36
Методы класса string IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny – определяются индексы первого и последнего вхождения заданной подстроки или любого символа из заданного набора StartsWith, …
Pic.37
Класс StringBuilder В языке C# существует понятие неизменяемый (immutable) класс. Для такого класса невозможно изменить значение объекта. Методы могут создавать новый объект на основе существующего, …
Pic.38
Класс StringBuilder К таким неизменяемым классам относится и класс string. Ни один из методов этого класса не меняет значения существующих объектов. Когда метод изменяет строку, результатом является …
Pic.39
Класс StringBuilder Класс StringBuilder позволяет компенсировать этот недостаток. Этот класс принадлежит к изменяемым классам, и его можно найти в пространстве имен System. Text
Pic.40
Класс StringBuilder Специальных констант этого типа не существует, поэтому объекты этого класса объявляются с явным вызовом конструктора класса. StringBuilder(string str, int cap) str - начальная …
Pic.41
Класс StringBuilder StringBuilder(string str, int start, int len, int cap) Параметры str, start, len задают строку инициализации, cap - емкость объекта
Pic.42
Класс StringBuilder var s1 = new StringBuilder("ABC"); var s2 = new StringBuilder("DEF"); var s3 = s2. Insert(0, s1. ToString()); WriteLine(s3); s3. Remove(3, 3); WriteLine(s3);
Pic.43
Класс StringBuilder Операция конкатенации (+) не определена над строками класса StringBuilder, ее роль играет метод Append, дописывающий новую строку в хвост уже существующей
Pic.44
Класс StringBuilder var s1 = new StringBuilder("ABC"); var s2 = new StringBuilder("DEF"); var s3 = s1; s3. Append(s2); WriteLine(s3);
Pic.45
Класс StringBuilder var s4 = new StringBuilder("Zenon"); WriteLine(s4); s4[0] = 'L'; WriteLine(s4);
Pic.46
Класс StringBuilder Capacity - возвращает или устанавливает текущую емкость буфера MaxCapacity - возвращает максимальную емкость буфера. Результат один и тот же для всех экземпляров класса int …
Pic.47
Класс StringBuilder var s1 = new StringBuilder(10, 100); WriteLine("s1: capacity = {0}, max = {1}", s1. Capacity, s1. MaxCapacity); s1. Append("123"); WriteLine("s1: capacity …
Pic.48
Класс StringBuilder var s2 = new StringBuilder("Hello"); WriteLine("s2: capacity = {0}, max = {1}", s2. Capacity, s2. MaxCapacity); s2. EnsureCapacity(20); WriteLine("s2: …
Pic.49
Класс StringBuilder for (int i = 0; i < 1000; ++i) { s1. Append("4"); }
Pic.50
LINQ и строки Библиотека LINQ также может быть использована для обработки текста. Это достигается за счет того, что строка текста может быть представлена в виде массива, что и позволяет использовать …
Pic.51
LINQ и строки string aString = "ABCDE99F-J74-12-89A"; IEnumerable<char> stringQuery = from ch in aString where Char. IsDigit(ch) select ch; foreach (char c in stringQuery) { Write(c + …
Pic.52
LINQ и строки int count = stringQuery. Count(); WriteLine("Count = {0}", count);
Pic.53
LINQ и строки string text = @"Historically, the world of data and the world of objects" + @" have not been well integrated. Programmers work in C# or Visual Basic" + @" and …
Pic.54
LINQ и строки Пример: подсчитать количество слов “data” в тексте.
Pic.55
LINQ и строки var matchQuery = from word in source where word. ToLowerInvariant() == searchTerm. ToLowerInvariant() select word;
Pic.56
LINQ и строки int wordCount = matchQuery. Count(); WriteLine("{0} occurrences(s) of the search" + " term \"{1}\" were found. ", wordCount, searchTerm);
Pic.57
LINQ и строки Пример: найти в тексте строку с заданными словами. Distinct – возвращает не повторяющиеся элементы последовательности Intersect – вычисляет пересечение двух массивов
Pic.58
LINQ и строки string[] sentences = text. Split( new char[] { '. ', '?', '!' } ); string[] wordsToMatch = { "Historically", "data", …
Pic.59
LINQ и строки var sentenceQuery = from sentence in sentences let w = sentence. Split( new char[] { '. ','?','!',' ',';',':',',' …
Pic.60
LINQ и строки foreach (string str in sentenceQuery) { WriteLine(str); }
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!