|
Программирование >> Обработка исключительных ситуаций
Глава 15. Дополнительные средства С# Листинг 15.1 {продолжение) pb->a - 100; Console.WriteLineC b.a ); результат: 100 Операция stackalloc позволяет в1делить память в стеке под заданное количество величин заданного типа: stackalloc тип [ количество ] Количество задается целочисленным выражением. Если памяти недостаточно, генерируется исключение System.StackOverflowException. Выделенная память ничем не инициализируется и автоматически освобождается при завершении блока, содержащего эту операцию. Пример выделения памяти под пять элементов типа int и их заполнения числами от 0 до 4: int* р = stackalloc int [5]; for С int i = 0; i < 5: ++i ) pC1]-1: Console.WriteC p[i] результат: 0 1 2 3 4 В листинге 15.2 приведен пример работы с указателями, взятый из спецификации С#. Метод IntToString преобразует переданное ему целое значение в строку символов, заполняя ее посимвольно путем доступа через указатель. Листинг 15.2. Пример работы с указателями: перевод числа в строку using System: class Test static string IntToString ( int value ) int n - value >- 0 ? value : -value; unsafe { char* buffer = stackalloc char[16]; char* p = buffer + 16; do { *-- p = (charX n % 10 + 0 ); n /- 10; } while ( n !- 0 ); if ( value < 0 ) *-- p - -: return new stringC p. 0, (int)C buffer + 16 - p ) ); static void MainO { Console.WriteLineC IntToStringC 12345 ) ); Console.WriteLineC IntToStringC -999 ) ); -улярные выражения 35 5 егулярные выражения гулярные выражения предназначены для обработки текстовой информации обеспечивают: эффективный поиск в тексте по заданному шаблону; редактирование, замену и удаление подстрок; формирование итоговых отчетов по результатам работы с текстом. помощью регулярных выражений удобно обрабатывать, например, файлы в фор-ате HTML, файлы журналов или длинные текстовые файлы. Для поддержки егулярных выражений в библиотеку .NET включены классы, объединенные пространство имен System.Text.RegularExpressions. Метасимволы егулярное выражение - это шаблон (образец), по которому выполняется поиск оответствующего ему фрагмента текста. Язык описания регулярных выражений юстоит из символов двух видов: обычных и метасимволов. Обычный символ федставляет в выражении сам себя, а метасимвол - некоторый класс символов, щпример любую цифру или букву. Например, регулярное выражение для поиска в тексте фрагмента Вася заплавается с помощью четырех обычных символов Вася, а выражение для поиска двух цифр, идущих подряд, состоит из двух метасимволов \d\d. С помощью комбинаций метасимволов можно описывать сложные шаблоны для поиска. Например, можно описать шаблон для IP-адреса, адреса электронной почты, различных форматов даты, заголовков определенного вида и т. д. ПРИМЕЧАНИ Е- Синтаксис регулярных выражений .NET в основном позаимствован из языка Perl 5 . Неподготовленного человека вид сложного регулярного в1ражения может привести в замешательство, но при вдумчивом изучении он обязательно почувствует его красоту и очарование. Пожалуй, регулярные выражения более всего напоминают заклинания, по которым волшебным образом преобразуется текст. Ошибка всего в одном символе делает заклинание бессильным, зато, верно составленное, оно творит чудеса! В табл. 15.2 описаны наиболее употребительные метасимволы, представляющие собой классы символов. Метасимволы, перечисленные в табл. 15.3, уточняют позицию в строке, в которой следует искать совпадение с регулярным выражением, например, только в начале или в конце строки. Эти метасимволы являются мнимыми, то есть в тексте им не соответствует никакой реальный символ. Глава 15. Дополнительные средства С# Таблица 15.2. Классы символов Класс символов Описание Пример
Фрагмент, совпадающий с регулярн1м в1ражением, следдует искать только в начале строки Фрагмент, совпадающий с регулярным выражением, следует искать только в конце строки Фрагмент, совпадающий с регулярным выражением, следует искать только в начале многострочной строки
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |