从.text文件中读取特定值并将其存储在变量中

时间:2014-12-05 20:06:45

标签: c#

我希望在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();

3 个答案:

答案 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);
}