16.Коллекции: коллекция Hashtable.
16. Коллекции: коллекция Hashtable. Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хеш-таблица. В хеш-таблице для хранения информации используется механизм, именуемый хешированием (hashing). Суть хеширования состоит в том, что для определения уникального значения, которое называется хеш-кодом, используется информационное содержимое соответствующего ему ключа. Хеш-код затем используется в качестве индекса, по которому в таблице отыскиваются данные, соответствующие этому ключу. Но преимущество хеширования - в том, что оно позволяет сокращать время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации. Класс Hashtable реализует стандартные интерфейсы IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback и ICloneable. Размер хеш-таблицы может динамически изменяться. В классе Hashtable определено несколько конструкторов: public Hashtable() //создает пустую хеш-таблицу // строит хеш-таблицу, которая инициализируется элементами коллекции с public Hashtable(IDictionary с) public Hashtable(int capacity) //создает хеш-таблицу с вместимостью capacity public virtual bool ContainsKey (object k) - Возвращает значение true, если в вызывающей хеш-таблице содержится ключ, заданный параметром k. В противном случае возвращает значение false. public virtual bool ContainsValue (object v) - Возвращает значение true, если в вызывающей хеш-таблице содержится значение, заданное параметром v. В противном случае возвращает значение false. В классе Hashtable, помимо свойств, определенных в реализованных им интерфейсах, определены два собственных public-свойства: public virtual ICollection Keys { get; } //позволяет получить коллекцию ключей public virtual ICollection Values { get; } //позволяет получить коллекцию значений
Для добавления элемента в хеш-таблицу необходимо вызвать метод Add(), который принимает два отдельных аргумента: ключ и значение.
17. Регулярные выражения, язык описания регулярных выражений. Регулярные выражения предназначены для обработки текстовой информации и обеспечивают: 1. Эффективный поиск в тексте по заданному шаблону; 2. Редактирование текста; 3. Формирование итоговых отчетов по результатам работы с текстом. Регулярное выражение - это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол - некоторый класс символов. Метасимволы: . - Любой символ, кроме \n. - Выражение c. t соответствует фрагментам: cat, cut, c#t, c{t и т. д. [] - Любой одиночный символ из последовательности, записанной внутри скобок. Допускается использование диапазонов символов. - Выражение c[aui]t соответствует фрагментам: cat, cut, cit. Выражение c[a-c]t соответствует фрагментам: cat, cbt, cct. \w - Любой алфавитно-цифровой символ. - Выражение c\wt соответствует фрагментам: cbt, cct, c2t и т. д., но не соответствует фрагментам c%t, c{t и т. д. Уточняющие метасимволы:
В регулярных выражениях часто используются повторители - метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений в выражении.
Примеры регулярных выражений:
1. слово rus - 2. @" rus" или " rus" 3. номер телефона в формате xxx-xx-xx - @" \d\d\d-\d\d-\d\d" или @" \d{3}(-\d\d){2}" 4. номер автомобиля - @" [A-Z]\d{3}[A-Z]{2}\d{2, 3}RUS"
18. Класс Regex и обработка текстовых данных. Важнейшим классом, поддерживающим регулярные выражения, является класс Regex, который представляет неизменяемые откомпилированные регулярные выражения. Для описания регулярного выражения в классе определено несколько перегруженных конструкторов: 1. Regex() - создает пустое выражение; 2. Regex(String) - создает заданное выражение; 3. Regex(String, RegexOptions) - создает заданное выражение и задает параметры для его обработки с помощью элементов перечисления RegexOptions (например, различать или нет прописные и строчные буквы). Поиск фрагментов строки, соответствующих заданному выражению, выполняется с помощью методов IsMach, Mach, Matches класса Regex. static void Main() { Regex r = new Regex(" собака", RegexOptions. IgnoreCase); string text1 = " Кот в доме, собака в конуре. "; string text2 = " Котик в доме, собачка в конуре. "; Console. WriteLine(r. IsMatch(text1)); Console. WriteLine(r. IsMatch(text2)); }
Попытаемся определить, есть ли в заданных строках номера телефона в формате xx-xx-xx или xxx-xx-xx: static void Main() { Regex r = new Regex(@" \d{2, 3}(-\d\d){2}" ); string text1 = " tel: 123-45-67"; string text2 = " tel: no"; string text3 = " tel: 12-34-56"; Console. WriteLine(r. IsMatch(text1)); Console. WriteLine(r. IsMatch(text2)); Console. WriteLine(r. IsMatch(text3)); }
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|