Поиск нескольких строк между двумя конкретными строками в текстовых файлах и отображение в сетке данных - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь добыть некоторые данные из сырых .txt файлов, которые сохраняются в папке. В каждом файле я получил RegretionModel и несколько PeakPoints . Мой файл необработанных данных выглядит примерно так:

Model ApprunningVersion = "10.4." Время последнего выполнения = ...... бла бла бла wr3r43f34f RegretionModel = Linear221 .... бал бал ...

k7878k7 wef34ferf PeakPoints = 11.11 .... bal bal

dwedw wf343f4 PeakPoints = 322,11 ..... бла бла ....

gewwg45gww35w PeakPoints = 6711.11 .... бла бла блааа ...

Я хотел извлечь RegretionModel и все значения PeakPoints в два разных RichTextBoxes .

if(all_files.Count>0)
            {
                var word_1 = "RegretionValue";
                var word_2 = "PeakPoints";
                foreach (string srd in all_files)
                {
                    using (var sr = new StreamReader(srd))
                    {
                        while (!sr.EndOfStream)
                        {
                            var line = sr.ReadLine();   
                            if (String.IsNullOrEmpty(line)) continue;
                            if (line.IndexOf(word_1, StringComparison.CurrentCultureIgnoreCase) >= 0)
                            {
                                int startIndex = line.IndexOf("RegretionValue \=") + "RegretionValue \=".Length;
                                int endIndex = line.IndexOf("\" LAPNum");
                                string flt_1 = line.Substring(startIndex, endIndex - startIndex);
                                richTextBox1.Text += flt_1 + "\r";
                            }

                            if (line.IndexOf(word_2, StringComparison.CurrentCultureIgnoreCase) >= 0)
                            {
                                int count = line.IndexOf(word_2, StringComparison.CurrentCultureIgnoreCase);
                                int startIndex_1 = line.IndexOf("PeakPoints \=") + "PeakPoints \=".Length;
                                int flt_2 = line.IndexOf("\" LPPCode");
                                string newString_1 = line.Substring(startIndex_1, flt_2 - startIndex_1);

                                richTextBox2.Text += newString_1 + "\r";
                                counter_1++;
                                label2.Text = counter_1.ToString() + " of " + matches + " completed";
                                label4.Text = count.ToString();

                            }


                        }

                    }


                }

            }

Это дает мне это, как я и ожидал;

|---------------------|------------------|
|      Linear221      |       11.11      |
|---------------------|------------------|
|                     |       322.11     |
|---------------------|------------------|
|                     |       6711.11    |
|---------------------|------------------|

Но проблема в том, что когда я читаю несколько файлов, все смешивается.

|---------------------|------------------|
|      Linear221      |       11.11      |
|---------------------|------------------|
|      Linear321      |       322.11     |
|---------------------|------------------|
|                     |       6711.11    |
|---------------------|------------------|
|                     |          1.11    |
|---------------------|------------------|
|                     |         21.11    |
|---------------------|------------------|

Что на самом деле должно быть;

|---------------------|------------------|
|      Linear221      |       11.11      |
|---------------------|------------------|
|      Linear221      |       322.11     |
|---------------------|------------------|
|      Linear221      |       6711.11    |
|---------------------|------------------|
|      Linear321      |          1.11    |
|---------------------|------------------|
|      Linear321      |         21.11    |
|---------------------|------------------| 

Я знаю, использование этих двух RichTextBox-ов не лучший вариант здесь. Поэтому я подумал о том, чтобы поместить его в представление таблицы данных без использования базы данных, но я застрял при привязке каждой Peakpoint к соответствующей RegretionModel , например, если я читаю один файл, у меня есть одно RegretionModel Name и несколько Peakpoints , как мне поставить каждый Peakpoint с соответствующим RegrationModel в Датагрид.

Я новичок, любая помощь будет оценена. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...