我想在c#中读取.txt文件,并从字符串中过滤掉一行,只显示该行。如果匹配在第一行,我使用streamreader.ReadLine得到一个好的输出。但如果它在第二行,我需要过滤它。 (我创建了一个ReadLine循环吗?) 提前致谢
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(textBox1.Text);
string BoxLM1 = sr.ReadLine();
if (comboBox3.Text == "Anderlecht")
{
if (BoxLM1.Contains("Anderlecht"))
{
label5.Text = BoxLM1;
}
else
{
string BoxLM2 = sr.ReadToEnd();
MessageBox.Show(BoxLM2);
}
答案 0 :(得分:5)
您可以使用File.ReadLines()
方法和LINQ:
var firstAnderlecht = File.ReadLines(textBox1.Text).FirstOrDefault(s => s.Contains("Anderlecht"));
if (firstAnderlecht != null) {
label5.Text = firstAnderlecht;
}
ReadLines
从文件中生成可枚举的行; FirstOrDefault
方法允许您在没有循环的情况下将条件应用于文件的所有行,并选择条件适用的第一行。
答案 1 :(得分:0)
如果您正在操作大文件,我建议使用此迭代器:
private static IEnumerable FileIterator(String filePathe)
{
using (StreamReader streamReader = new StreamReader(filePathe))
{
String line;
while ((line = streamReader.ReadLine()) != null)
{
yield return line;
}
yield break;
}
}
它将阻止将完整文件加载到RAM