我希望在c#中读取一个特定值的.txt
文件然后将其存储在一个值本身示例中我有一个文本文件example.txt
,有几行,但我正在搜索表示Damian:2014/12/04
然后仅将2014/12/04
存储到初始值示例DateTime storedate;
的行使用此示例我设法读取文件中的所有行并搜索特定文件,但我不知道如何存储它并修剪以捕获日期和日期是可以互换的,所以它只是我试图获得的日期。
int counter = 0;
DateTime storedate;
string line;
StreamReader file = new StreamReader(@"c:\example.txt");
while ((line = file.ReadLine()) != null)
{
if (line.Contains("Damian:"))
// Im stuck as what to do next
}
file.Close();
答案 0 :(得分:2)
if(line.Contains("Damian:"))
storedate = DateTime.Parse(line.Replace("Damian:","").Trim());
是获取你所追求的日期的最简单方法。
答案 1 :(得分:1)
您可能正在寻找String.Split
:
// Initialize outside of while loop.
DateTime storeDate = new DateTime();
if (line.StartsWith("Damian:"))
{
storeDate = DateTime.Parse(line.Split(':')[1]);
}
代码少,可能比替换+修剪更快。
line.Split(':')[0]
得到冒号的左侧,在这种情况下," Damian。"获得右侧的任何内容{/ 1}}。
希望这有帮助!
答案 2 :(得分:1)
您可以使用正则表达式来完美匹配:
DateTime? storeDate = null;
using (var reader = new StreamReader(@"c:\example.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
var m = Regex.Match(line, @"Damian:\s*(?<storedate>[0-9]{4}/[0-9]{2}/[0-9]{2})");
if (m.Success)
{
storeDate = DateTime.Parse(m.Groups["storedate"].Value);
// break;
}
}
}
if (storeDate.HasValue)
Console.WriteLine("StoreDate = " + storeDate.Value);
如果文件足够小以适合内存,您可以使用File.ReadAllText
并将代码简化为:
DateTime? storeDate = null;
var m = Regex.Match(File.ReadAllText(@"c:\example.txt"), @"Damian:\s*(?<storedate>[0-9]{4}/[0-9]{2}/[0-9]{2})");
if (m.Success)
{
storeDate = DateTime.Parse(m.Groups["storedate"].Value);
Console.WriteLine("StoreDate = " + storeDate.Value);
}