使用用户在文本框中的输入,我想搜索目录中的哪个文件包含该文本。然后我想解析出信息
但我似乎找不到字符串或至少无法返回信息。任何帮助将不胜感激。
我当前的代码:
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/