我正在尝试从特定开始时间到特定结束时间的文本文件中获取行,例如如果我的Range TimeSpan是从上午10:00开始的FromHours(10),则程序应该读取包含开始时间“上午10:00”的所有行,直到特定的结束TimeSpan“17:00 pm”。您的帮助将受到高度赞赏。
输入文件是这样的:
2016/05/11 10:14:00 blah blah blah dah dah dah
2016/05/11 12:14:00 dah dah dah blah blah blah blah
2016/05/11 16:14:00 dah dah dah blah blah blah blah
2016/05/11 17:24:00 dah dah dah blah blah blah blah
文件中每行的开头包含日期和时间。
这是我到目前为止的代码:
var FilePath = new DirectoryInfo("C:\\music\\playlist.txt");
List<string> list = new List<string>();
var StartTime = DateTime.Today.Add(TimeSpan.FromHours(10)).ToShortTimeString();
var EndTime = DateTime.Today.Add(TimeSpan.FromHours(17)).ToShortTimeString();
foreach (var line in FilePath )
{
StreamReader read = line.OpenText();
while ((inside = read.ReadLine()) != null)
{
list.Add(inside);
};
string[] array = list.ToArray();
for (int i = 0; i < array.Length; i++)
{
if (array[i].Contains(StartTime) and is greater than StartTime, Display lines and stop Displaying if you find EndTime )
{
Console.WriteLine(array[i]);
};
};
答案 0 :(得分:1)
您可以尝试使用 Linq :提取日期并过滤
var result = File
.ReadLines(@"C:\music\playlist.txt")
.Select(line => line.Split(new char[] {' '}, 3))
.Select(items -> new {
date = DateTime.ParseExact(items[0] + " " + items[1],
"yyyy/M/d H:m:s",
CultureInfo.InvariantCulture),
text = items[2]
})
.Where(item => item.date >= specificStartTime &&
item.date <= specificEndTime)
.Select(item => string.Format("{0} {1}",
item.date.ToString("yyyy/MM/dd HH:mm:ss"),
item.text));