/// <summary> /// Обработка данных для получения структурированного расписания экзаменов /// </summary> private void ParseExams() { _listExams.Clear(); int i = 0; // Производим поиск необходимых элементов while (i < _dataStrArrayExams.Count) { // Проверяем, нет ли элемента строки в строке документа исходного if (_dataStrArrayExams[i].Contains("bgcolor=#ddddee> ")) { // Создаем объект предмета и заполняем его поля var subject = new Exam(); string pattern = " (\\d+\\.\\d+\\.\\d+) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { var date = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value; subject.DateExam = DateTime.ParseExact(date, "dd.MM.yyyy", CultureInfo.InvariantCulture); } i++; pattern = " (\\w+) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { subject.DayOfWeek = (DayOfWeek)(new DayOfWeekConverter()).ConvertBack(Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value, typeof(DayOfWeek), null, CultureInfo.CurrentCulture); } i++; pattern = " (\\S+ - \\S+) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { subject.StringTime = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value; } i++; pattern = " ([\\S\\s]*) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { subject.StringSubject = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value; } i++; pattern = " ([\\S\\s]*) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { subject.StringTeacher = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value; } i++; pattern = " ([\\S\\s]*) "; if (Regex.IsMatch(_dataStrArrayExams[i], pattern)) { subject.StringLocation = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value; } _listExams.Add(subject); } i++; } _sortedListExams.Clear(); _sortedListExams = new ObservableCollection<Exam>(_listExams.OrderBy(exam => exam.DateExam)); _isExamsLoaded = true; NotifyPropertyChanged("Exams"); }