在txt文件中的两个特定字符串之间搜索多个字符串,然后在数据网格中显示

时间:2018-09-12 01:58:06

标签: c# string datagrid streamreader

我正在尝试从保存在文件夹中的原始.txt文件中挖掘一些数据。在每个文件中,我都有 RegretionModel 和多个 PeakPoints 。 我的原始数据文件看起来像这样;

  

Model ApprunningVersion =“ 10.4”。 LastExecution time = ...... bla bla bla wr3r43f34f RegretionModel = Linear221 .... bal bal ...

     

k7878k7 wef34ferf PeakPoints = 11.11 .... bal

     

dwedw wf343f4 PeakPoints = 322.11 ..... bla blaa ....

     

gewwg45gww35w PeakPoints = 6711.11 .... bla bla blaaa ...

我想将 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    |
|---------------------|------------------| 

我知道,使用这两个RichTextBoxes不是最好的选择。因此,我想到了不使用数据库就将其放入数据网格视图的方法,但是我坚持将每个 Peakpoint 链接到相应的 RegretionModel , 例如,如果我读取一个文件,我有一个 RegretionModel 名称和多个 Peakpoints ,我该如何将每个 Peakpoint 与相应的 RegrationModel < / strong>到Datagrid。

我是新手,将不胜感激。 谢谢。

0 个答案:

没有答案