C# 如何在textfile中再获得两行
我有下面的代码我想这一行和下面的2行如何做这任何想法。请帮忙,我要最后一个号码,请看下面的文字C# 如何在textfile中再获得两行,c#,C#,我有下面的代码我想这一行和下面的2行如何做这任何想法。请帮忙,我要最后一个号码,请看下面的文字 static void Main() { int counter = 0; string line; StringBuilder sb = new StringBuilder(); using (System.IO.StreamReader file = new System.IO.StreamReader(@"E:\file\log.txt")) {
static void Main()
{
int counter = 0; string line;
StringBuilder sb = new StringBuilder();
using (System.IO.StreamReader file = new System.IO.StreamReader(@"E:\file\log.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(DateTime.Now.Date.ToShortDateString()))
{
sb.AppendLine(line.ToString());
}
}
}
Console.WriteLine(sb.ToString());
Console.ReadKey();
}
*****来电:2016年4月25日-11:45****
名称:测试
电话:(425)555-1212
*****来电:2016年4月25日-11:45****
名称:Test2
NUMBER:(425)544-1213只需再调用file.ReadLine两次,但检查返回的字符串是否为null很重要,因为您可能会到达文件的意外结尾,并且您的代码不再受while条件中检查的保护
...
using (System.IO.StreamReader file = new System.IO.StreamReader(@"E:\file\log.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(DateTime.Now.Date.ToShortDateString()))
{
sb.AppendLine(line);
line = file.ReadLine();
if(line != null) sb.AppendLine(line);
line = file.ReadLine();
if(line != null) sb.AppendLine(line);
}
}
}
如果只想获得最后三行(假设文件格式良好),则可以在循环中添加StringBuilder的重置
using (System.IO.StreamReader file = new System.IO.StreamReader(@"E:\file\log.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(DateTime.Now.Date.ToShortDateString()))
{
// This will remove the previous data and keep
// just the last three lines.....
sb.Length = 0;
sb.AppendLine(line);
line = file.ReadLine();
if(line != null) sb.AppendLine(line);
line = file.ReadLine();
if(line != null) sb.AppendLine(line);
}
}
}
作为替代方案,但我不确定从性能角度来看这是否是一个好主意(特别是如果我们谈论的是一个大文件),我们可以这样使用linq
string result = string.Join(Environment.NewLine,
File.ReadLines(@"E:\file\log.txt").Reverse().Take(3));
static void Main()
{
int计数器=0;字符串行;
List ss=新列表();
使用(System.IO.StreamReader file=new System.IO.StreamReader(@“E:\file\log.txt”))
{
而((line=file.ReadLine())!=null)
{
if(line.Contains(DateTime.Now.Date.ToShortDateString()))
{
ss.添加(行);
line=file.ReadLine();
如果(行!=null)
ss.添加(行);
line=file.ReadLine();
如果(行!=null)
ss.添加(行);
}
}
}
var item=ss.LastOrDefault();
字符串编号=项。子字符串(0,24)。替换(“编号:”,“”)。修剪();
控制台写入线(编号);
Console.ReadKey();
}
我想要最后一个如何得到这个对不起,我不明白你的评论
static void Main()
{
int counter = 0; string line;
List<string> ss = new List<string>();
using (System.IO.StreamReader file = new System.IO.StreamReader(@"E:\file\log.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(DateTime.Now.Date.ToShortDateString()))
{
ss.Add(line);
line = file.ReadLine();
if (line != null)
ss.Add(line);
line = file.ReadLine();
if (line != null)
ss.Add(line);
}
}
}
var item = ss.LastOrDefault();
string number = item.Substring(0, 24).Replace("NUMBER:", "").Trim();
Console.WriteLine(number);
Console.ReadKey();
}