我有这样的文本文件:
11/18/2012 测试1
11/19/2012 测试2
11/20/2012 测试3
2012 年 11 月 21 日测试 4
11/22/2012 测试5
11/23/2012 测试6
11/24/2012 测试7
11/25/2012 测试8
如何搜索当前日期并返回包含该日期的整行?例如,如果我今天运行程序,它应该返回
11/18/2012 测试1
代码:
string searchKeyword = monthCalendar1.SelectionStart.ToShortDateString();
string[] textLines = File.ReadAllLines(@"c:\temp\test.txt");
List<string> results = new List<string>();
foreach (string line in textLines)
{
if (line.Contains(searchKeyword))
{
results.Add(line);
listBox2.Items.Add(line);
}
}
Run Code Online (Sandbox Code Playgroud)
首先- 按行拆分文本。例如这样:
// string[] lines = File.ReadAllLines(@"c:\temp\test.txt");
string[] lines = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)
第二- 以指定格式查找以当前日期字符串开头的行:
string date = DateTime.Now.ToString("MM/dd/yyyy");
IEnumerable<string> results = lines.Where(l => l.StartsWith(date));
Run Code Online (Sandbox Code Playgroud)
如果您完全确定可能只有一条这样的行,请使用
string result = lines.SingleOrDefault(l => l.StartsWith(date));
Run Code Online (Sandbox Code Playgroud)
这是您的代码修复和重构(您应该使用自定义日期字符串格式并使用StartsWith代替Contains)
string searchKeyword = monthCalendar1.SelectionStart.ToString("MM/dd/yyyy");
string[] textLines = File.ReadAllLines(@"c:\temp\test.txt");
foreach (string line in textLines.Where(l => l.StartsWith(searchKeyword)))
listBox2.Items.Add(line);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5520 次 |
| 最近记录: |