我正在尝试获取文本文件中从特定开始时间到特定结束时间的行。例如,如果我的范围TimeSpan是FromHours(10),即上午10:00,则程序应读取包含开始时间"上午10:00"的所有行,直到特定结束时间Span"下午17:00"。我们将非常感谢您的帮助。
输入文件如下:
2016/05/11 10:14:00等等等等等等
2016/05/11 12:14:00 dah-dah-dah等等等等
2016/05/11 16:14:00 dah-dah-dah等等等等
2016/05/11 17:24:00 dah-dah-dah等等等等
文件中每一行的开头都包含日期和时间。
这是我迄今为止的代码:
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]);
};
};
您可以尝试使用Linq:提取日期并过滤
var result = File
.ReadLines(@"C:musicplaylist.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));