コード例 #1
0
        public void ProcessText()
        {
            dataList.Clear();   // Очищает список объектов.
            Number = 0;         // Обнуляет счётчик групп.
            termList.Clear();   // Очищает список всех терминов.
            groups.Clear();     // Очищает список групп.


            string pattern = @"\s*#";      // Паттерн для регулярного выражения.

            string[] lines = Regex.Split(richTextBox1.Text, "\n");

            // Каждую строчку в загруженном тексте разбивает на элементы,
            // превращает в объект типа InfoAboutConnection,
            // записывает в dataList.
            // Добавляет термины в termList для дальнейшего подсчёта
            // количества терминов в группе.
            for (int i = 0; i < lines.Length - 1; i++)
            {
                string[] fields = Regex.Split(lines[i], pattern);   // Разделяет строку на элементы.

                // Если в строке меньше 3 элементов, пропускает.
                if (fields.Length < 3)
                {
                    continue;
                }

                // Формирует список всех терминов.
                for (int j = 0; j < 3; j++)
                {
                    if (j == 0 || j == 2)
                    {
                        fields[j] = fields[j].Replace(" ", "");
                        termList.Add(fields[j]);
                    }
                }

                // Удаляет повторяющиеся элементы в списке.
                DeleteSame(ref termList);

                termList.Sort();

                InfoAboutConnection info = new InfoAboutConnection();      // Объект с информацией о связи.

                // Записывает в таблицу и удаляет пробелы.
                info.Term1      = fields[0].Trim();
                info.Connection = fields[1];
                info.Term2      = fields[2].Trim();
                CheckList(info);
                info.Number = Number;

                // Добавляет объект в список.
                dataList.Add(info);
            }

            // Обновляет содержимое таблицы.
            PutDataToTable();

            MakeTermList();
        }
コード例 #2
0
        // Метод для проверки на наличие связи в существующем списке.
        private void CheckList(InfoAboutConnection inf)
        {
            bool check = false;

            // Проверяет каждый существующий элемент на наличие связи.
            for (int i = 0; i < dataList.Count; i++)
            {
                if (dataList[i].Term1 == inf.Term1 || dataList[i].Term1 == inf.Term2 || dataList[i].Term2 == inf.Term1 || dataList[i].Term2 == inf.Term2)
                {
                    check = true;
                }
            }

            if (!check)
            {
                // Если не находит, то инкрементирует Number.
                Number++;
            }
        }