【问题标题】:c# how to read same line from multiple files after a search from 1 of the files?c#如何在从1个文件中搜索后从多个文件中读取同一行?
【发布时间】:2016-02-21 03:53:03
【问题描述】:

这与我正在处理的类似,我必须同时按顺序执行 3 个文件,当找到字符串时,它会显示每个文件该行的数据。到目前为止,我的问题是它没有正确读取第二个和第三个文件中的数据,它只读取第一行。我的第二个问题,我正在尝试使用

String.Compare(string1, searchBox, true) 

但我不确定将其放在何处,因此搜索在搜索过程中会忽略空格(修剪)或大写字母。代码:

    string string1, string2, string3, searchBox;

    StreamReader file1, file2, file3;

    file1 = File.OpenText("data1.dat");
    file2 = File.OpenText("data2.dat");
    file3 = File.OpenText("data3.dat");

    string1 = file1.ReadLine();
    string2 = file2.ReadLine();
    string3 = file3.ReadLine();

    searchBox = searchTxtBox.Text.Trim();

    while ((string1 = file1.ReadLine()) != null)
    {
          if (string1.Contains(searchBox))
          {
           infoListBox.Items.Add(string1 + "====" + string2 + "====" + string3);
           break;
          }
    }

file1.Close();
file2.Close();
file3.Close();

【问题讨论】:

  • "同时顺序" :(
  • 我知道...但是我们必须服从命令嘿

标签: c# readline sequential opentext


【解决方案1】:
string string1, string2, string3, searchBox;

StreamReader file1, file2, file3;

file1 = File.OpenText("data1.dat");
file2 = File.OpenText("data2.dat");
file3 = File.OpenText("data3.dat");

searchBox = searchTxtBox.Text.Trim();

while ((string1 = file1.ReadLine()) != null
    && (string2 = file2.ReadLine()) != null 
    && (string3 = file3.ReadLine()) != null)
{
      if (string1.IndexOf(searchBox, StringComparison.CurrentCultureIgnoreCase) >= 0)
      {
       infoListBox.Items.Add(string1 + "====" + string2 + "====" + string3);
       break;
      }
}

file1.Close();
file2.Close();
file3.Close();

【讨论】:

  • 谢谢!它终于用 && 和 StringComparison 更新了第二个和第三个文件
  • 太棒了!很高兴它能帮助你!
  • 你知道为什么我得到“无法将类型'string'隐式转换为'decimal' for && (string2 = file2.ReadLine()) != null) 我确保使用转换为十进制string2 = decimal.Parse(file2.ReadLine())
  • 不要使用decimal.Parse(file2.ReadLine()),因为在将字符串传递给Parse方法之前不检查null
  • gameSales = decimal.TryParse(saleFiles.ReadLine(), out gameSales);是错误的,使用if (decimal.TryParse(saleFiles.ReadLine(), out gameSales))如果能转换则为真,否则为假
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 2011-04-01
  • 2020-03-31
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
相关资源
最近更新 更多