2010-08-12 42 views
1

我有一个数组包含不同的数据块,我必须提取包含日期和小时的块。我怎么能这样做?比较数组格式

string[] s={"File", "Block", "Detected:", "2010-08-11", "11:48:50", etc...} 

的日期和时间是不是始终在同一位置,但他们也有相同的格式

+2

可以重新格式化你的代码?它看起来不正确:(1)你正在给一个字符串数组分配一个字符串,(2)嵌套的双引号看起来不正确。 – Heinzi 2010-08-12 10:18:47

+0

请更好地描述问题,因为不清楚你想要得到什么...只是从那个日期开始?或者包含日期块的s?为了获取日期,如果它的格式相同,你可以使用一些正则表达式。参见http://gsharper.blogspot.com/2007/03/hi-since-i-always-forget-this-one-ill。 HTML来得到我的意思。 – 0x49D1 2010-08-12 10:19:56

+0

请格式化您的代码。也把它放到一个C#文件中,让编译器帮你把它变成一行有效的C#代码。这将有助于找到一个好的答案。 (好问题=>很好的答案) – Manfred 2010-08-12 10:20:48

回答

0

既然你知道,日期和时间将在阵列内的某个位置,你可以遍历通过阵列并寻找看起来像某个日期或时间的东西。例如:

foreach (str in s) { 
    if (Regex.IsMatch(str, @"\d\d\d\d-\d\d-\d\d")) { 
     // found the date 
    } 
} 

,或者使用LINQ:

string myDate = (from str in s 
       where Regex.IsMatch(str, @"\d\d\d\d-\d\d-\d\d") 
       select str).First(); 

为了识别时,可以使用正则表达式\d\d:\d\d:\d\d

(所有测试的代码,因为我没有Visual Studio中可用的现在。)

0
 string[] sArr = { "File", "Block", "Detected:", "2010-08-11", "11:48:50", "29.01.1987 12:23" }; 

     foreach (var s in sArr) 
     { 
      DateTime d; 

      if (DateTime.TryParse(s, out d)) 
      { 
       Console.WriteLine(d); 
      } 
     }