【问题标题】:Extract date time from file name with extension从带有扩展名的文件名中提取日期时间
【发布时间】:2015-08-25 12:22:07
【问题描述】:

我想从字符串中提取日期。

字符串:_21_BT_Txn_Details_1-Aug-2015_1031389ACF6.zip

怎么做?

【问题讨论】:

  • 在字符串中查找日期并删除其余部分。
  • 试试这个:\d+-\w+-\d+ .. regex101.com/r/lW9yI3/1
  • 不,用_ 分割并在元素上使用DateTime.Parse() 来检查哪个日期正确。
  • 在 Google 上搜索“从字符串 c# 中提取日期”,第一个结果是 this question...
  • 如果 OP 已准备好进行 一些 工作,那么该问题的公认答案就足够 IMO 了。它描述了使用正则表达式从字符串中提取一部分,然后将其解析为具有特定格式的 Date 对象的方法。 OP 将需要单独弄清楚他的案件的具体细节,但如果你想学习,那就是这样做的方法。

标签: c# asp.net regex


【解决方案1】:

试试这个:

\d{1,2}-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{4}

正则符号的演示和解释:https://regex101.com/r/lW9yI3/2

假设:

  • 日期可以是一位或两位数
  • 年份总是四位数
  • 月份使用标准的三字母缩写

【讨论】:

    【解决方案2】:

    您可以使用以下代码,可以在字符串中提取多个日期,就像您提供的那样:

    var txt = "_21_BT_Txn_Details_1-Aug-2015_1031389ACF6.zip";
    DateTime dt;
    var res = txt.Split('_').Where(p => DateTime.TryParse(p, out dt)).ToList();
    

    或者,如果您的日期始终采用上述格式 (day-MON-year),请使用

    DateTime.TryParseExact(p, "d-MMM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)
    

    这里不需要正则表达式。

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2011-03-10
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2018-10-22
      相关资源
      最近更新 更多