【问题标题】:How to extract date from a string in C#? [closed]如何从 C# 中的字符串中提取日期? [关闭]
【发布时间】:2016-02-10 16:57:27
【问题描述】:

我一直想提取这种特定格式的日期。 月/日/年

string inputText = "Examination held on January 06, 2015 at the University of Bikini Bottom";

我一直在考虑 Regex,但我不知道如何实现它。

【问题讨论】:

  • Regex 在这里不起作用,你需要编写一个解析器,首先你需要寻找十二个月中的一个,一旦你发现它在一个刺痛中,那么你将不得不抓住数字之后是你的一天,逗号之后是一年。其实做起来没那么难。
  • 你能指定所有可能的格式吗?
  • @FilixMogilevsky 好吧,您也可以使用 RegEx 来做到这一点,但它会相当大。
  • “我一直在考虑正则表达式”你坚持哪一部分?创建正则表达式或将其应用于您的字符串?
  • 确实如此,你可以用 Regex 做任何事情,但解决方案要比使用 C# 困难得多。我猜对了一半:)

标签: c# regex string date


【解决方案1】:

以下正则表达式适用于您的示例中的格式,只要您在提取阶段不太在意验证日期即可:

string str = "Examination held on January 06, 2015 at the University of Bikini Bottom";
string regex = @"(January|February|March|April|May|June|July|August|September|October|November|December) *(\d|[0-3]\d), *\d{4}";
var result = Regex.Match(str, regex).Value; // January 06, 2015

【讨论】:

    【解决方案2】:

    对于这种特定格式,您可以使用如下内容:

    string inputText = "Examination held on January 06, 2015 at the University of Bikini Bottom";
    Regex r = new Regex(@"on (\w+ \d+, \d+)");
    
    Console.WriteLine(r.Match(inputText).Groups[1].ToString());
    

    【讨论】:

      【解决方案3】:

      你将不得不做两件事

      • 提取日期子字符串
      • 解析它

      字符串是否总是“在 举行的考试”?希望如此

      var first = str.Substring(20); // 20 is the length of Examination held on 
      var idx = first.IndexOf("at the");
      var dt = first.Substring(0, idx);
      

      现在 dt 有了日期字符串

      使用 DateTime.Parse 解析日期 - 谷歌它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多