C# 一串字符中包含日期,日期格式有多种,如
a="字符串2010年1月1日字符串"
b="字符串2010/1/1字符串"还有很多种格式如(2010年1月1日 2010-1-1 2010/1/1 201011 20100101)等等情况都有可能出现。有什么通用一点的正则或方法可以将这些日期提取出来了?

解决方案 »

  1.   

    给出所有可能情况            Regex reg = new Regex(@"\d{4}[年/.-]?\d{1,2}[月./-]?(\d{1,2}日?)?");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Value + "\n";
                }正则可简可繁,视情况而定
      

  2.   

    可以使用正则表达式,取 Regex.Match(...).Value ,然后再做转换就好了,关于 pattern 楼主可以上网去搜索一下
      

  3.   

    没有规律。时间可以包含在任何字符串中的任何位置。比如取任何新闻网页中的时间。如取出本网页 http://topic.csdn.net/u/20100306/10/7dea8890-e0c0-49a6-8ebb-a6fa72f67138.html?88013 中第一个时间 是 2010-03-06 10:40:22
      

  4.   

    因为限定的比较粗,所以可能取到不想要的内容,那要看你源字符串的情况了
    看下下面是否满足,如果不满足,就要再精细限制一下了
                Regex reg = new Regex(@"\d{4}[年/.-]?\d{1,2}[月./-]?(\d{1,2}日?)?(\s*\d{1,2}:\d{1,2}:\d{1,2})?");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Value + "\n";
                }