C# 搜索目录中包含字符串的所有文件,然后返回该字符串

标签 c#

使用用户在文本框中的输入,我想搜索目录中的哪个文件包含该文本。然后我想解析出信息

但我似乎找不到字符串或至少无法返回信息。任何帮助将不胜感激。

我当前的代码:

private void btnSearchSerial_Click(object sender, EventArgs e)
{
    dynamic dirScanner = @"\\mypath\";
    string strSerial;
    string strSID;
    string strInputLine;
    string strOutput;

    strSerial = Convert.ToString(txtSerialSearch);
    strSID = Convert.ToString(txtSID);

    if (txtSerialSearch.Text != "" && txtSID.Text != "")
    {
         try
         {                    
              string[] allFiles = Directory.GetFiles(dirScanner);

              foreach (string file in allFiles)
              {
                   if (file.EndsWith(".txt"))                            
                   {  
                        using (StreamReader sr = new StreamReader(file))
                        {
                              while (sr.Peek() >= 0)
                              {
                                   strInputLine = sr.ReadLine();

                                   if (strInputLine.Contains(strSerial))
                                   {
                                        strOutput = Convert.ToString(strInputLine);
                                        lblOutput.Text = Convert.ToString(strOutput);
                                   }
                              }
                        }
                   }
              }
         }
    }
}

最佳答案

你似乎迷路了。当您只需要 string 时,为什么要使用 dynamic?您的代码有太多不必要的变量和转换。这是一种更简单的方法。如果有很多匹配行,我不知道你想要标签有什么,这里我只把第一行放在那里:

string dirScanner = @"\\mypath\";

if (string.IsNullOrWhiteSpace(txtSerialSearch.Text) || string.IsNullOrWhiteSpace(txtSID.Text))
    return;

string[] allFiles = Directory.GetFiles(dirScanner, "*.txt");

foreach (string file in allFiles)
{
    string[] lines = File.ReadAllLines(file);
    string firstOccurrence = lines.FirstOrDefault(l => l.Contains(txtSerialSearch.Text));
    if (firstOccurrence != null)
    {
        lblOutput.Text = firstOccurrence;
        break;
    }
}

关于C# 搜索目录中包含字符串的所有文件,然后返回该字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782225/

相关文章:

c# - 在 C# 中获取计算机名称而不引用 Microsoft.VisualBasic.dll

c# - 在 json.net 中转换为 DateTime

c# - Controller 不明确错误,升级到MVC2

c# - 对另一个用户控件显示/隐藏一个用户控件

c# - 具有 UUID (GUID) 的 MongoDB C# 过滤器返回 0 结果

c# - 在 IIS 7 中托管非基于 Web 的应用程序

c# - 如何创建多个图片框并保留它们?

c# - 使用异步代码时获得有意义的堆栈跟踪

c# - IoC 容器的协变服务解析

c# - 如何存储和恢复无限世界?