【问题标题】:Extract date in a string C#?在字符串 C# 中提取日期?
【发布时间】:2013-06-28 15:33:05
【问题描述】:

提取字符串中给出的日期有什么好的解决方案?

例如:

string block = "This should try to get a date 2005-10-26"; //TODO! I WANT THE DATE

有什么好的建议吗?

也许是正则表达式?

【问题讨论】:

  • 是的,正则表达式,但我们需要更多信息。您只是在寻找yyyy-mm-dd 日期吗?你介意正则表达式匹配1234-56-78吗?
  • 字符串总是有相同的模式吗?
  • 是的 yyyy-mm-dd 格式,对不起,我应该提到这一点!但我想把它限制在一个月,因为我们有它和一天。字符串可能有不同的模式,我们只想检查是否有日期,提取它。

标签: c# regex windows string date


【解决方案1】:

最简单的正则表达式是

new Regex(@"\b\d{4}-\d{2}-\d{2}\b")

但这不会进行任何错误检查,只会准确地找到该格式。

如果你想做日期验证,regex 不是你最好的朋友。这是可能的,但最好留给日期解析器,unless you want render suicidal whoever has to read your code 六个月后。我同意进行基本的健全性检查,但不要尝试验证闰年等:

new Regex(@"\b\d{4}-(?:1[0-2]|0[1-9])-(?:3[01]|[12][0-9]|0[1-9])\b")

【讨论】:

  • 谢谢你! :D 这对我的程序来说应该足够了。谢谢!
  • 匹配 1 或 2 位数的月/日也可能是谨慎的。 @"\b\d{4}-\d{1,2}-\d{1,2}\b".
  • @Romoku:他明确表示他只想匹配两位数的月/日。
  • 我只是提供一个建议,因为通常有几个月/几天没有前导零。如果他觉得它没有用,那么他就不需要使用它。
  • @Romoku:哦,当然。抱歉,如果我的回复听起来不屑一顾,那不是我的本意。
猜你喜欢
  • 2011-02-17
  • 1970-01-01
  • 2020-08-14
  • 2016-06-24
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多