按日期和名称搜索文本文件中的句子

本文关键字:文件 句子 文本 搜索 日期 | 更新日期: 2023-09-27 18:06:11

我正在尝试按日期和名称搜索我的文本文件中的句子。然后我想把这个句子加载到我表单中的一些文本框中。我是VS的新手,但我知道一些关于C的事情。我已经想出了这个代码:

string pattern =  dateTimePicker1Is.Text;
string pattern1 = _txtNameIs.Text;
IList<string> result = new List<string>();
using (var reader = new StreamReader(@"C:'Users'user'Desktop'Testet System'isto.txt"))
{
    string currentLine;
    while ((currentLine = reader.ReadLine()) != null)
    {
         if (currentLine.Contains(pattern))
         {
              if (currentLine.Contains(pattern1))
              {
                   result.Add(currentLine);
                   string[] tempArray = currentLine.Split(',');
                   _txtNameIs.Text = tempArray[0];
                   _txtSurnameIs.Text = tempArray[1];
                   _txtApokxT.Text = tempArray[2];
                   _txtApoktT.Text = tempArray[3];
                   _txtEpanxT.Text = tempArray[4];
                   _txtEpandT.Text = tempArray[5];
                   _txtApokkT.Text = tempArray[6];
                   _txtEpankT.Text = tempArray[7];
                   _txtApoksT.Text = tempArray[8];
                   _txtEpansT.Text = tempArray[9];
                   _txtGenSun.Text = tempArray[10];
                   break;
             }
             else
             {
                   MessageBox.Show("There are no records!");
             }
        }
    }
}

当我按下搜索按钮时,它加载了我需要的所有数据,但如果我有相同的名字和不同的日期,一个消息框弹出并告诉'没有记录'。

按日期和名称搜索文本文件中的句子

我相信有更好的方法:

string pattern =  dateTimePicker1Is.Text;
string pattern1 = _txtNameIs.Text;
string pathToFile = @"C:'Users'user'Desktop'Testet System'isto.txt";
List<string> result = new List<string>();
foreach (var line in File.ReadAllLines(pathToFile))
{
   if (line.Contains(pattern) && line.Contains(pattern1))
   {
       result.Add(line);
       string[] tempArray = line.Split(',');
       if(tempArray.Length >= 11)
       {
           _txtNameIs.Text = tempArray[0];
           _txtSurnameIs.Text = tempArray[1];
           _txtApokxT.Text = tempArray[2];
           _txtApoktT.Text = tempArray[3];
           _txtEpanxT.Text = tempArray[4];
           _txtEpandT.Text = tempArray[5];
           _txtApokkT.Text = tempArray[6];
           _txtEpankT.Text = tempArray[7];
           _txtApoksT.Text = tempArray[8];
           _txtEpansT.Text = tempArray[9];
           _txtGenSun.Text = tempArray[10];
           break; 
       }  
   }        
}

如果列表计数为0,则最好显示消息

我认为你的There are no records错误应该发生

  1. while语句后
  2. 如果没有找到匹配

对吧?

因此,如果在bool中找到匹配,然后在while if !IsMatchFound之后抛出错误。