c# - dd-MMM-yyyy 和 dd-MMM 的正则表达式?

标签 c# java asp.net regex

我需要一个正则表达式来支持日期格式 dd-MMM-yyyydd-MMM

例如:

04-Oct-2010
04-Oct
04-OCT-2010
04-OCT

最佳答案

如果您只需要 C# 解决方案,还有更优雅的解决方案:

//I intentionally change to 5th of October
var stringDates = new string[] { "05-Oct-2010", "05-Oct", "05-OCT-2010", "05-OCT" };
foreach(var s in stringDates)
{
    DateTime dt;

    if (DateTime.TryParseExact(s, new string[] { "dd-MMM-yyyy", "dd-MMM" }, null, DateTimeStyles.None, out dt) )
        Console.WriteLine(dt.ToShortDateString());
}

此代码打印:

05/10/2010
05/10/2010
05/10/2010
05/10/2010

您甚至可以使用一些奇特的 LINQ:

static DateTime? Parse(string str, string[] patterns)
{
    DateTime result;
    if (DateTime.TryParseExact(str, patterns, null, DateTimeStyles.None, out result) )
        return result;
    return null;
}

static void Main(string[] args)
{
    var stringDates = new string[] { "05-Oct-2010", "05-Oct", "05-OCT-2010", "05-OCT" };
    var patterns = new string[] {"dd-MMM-yyyy", "dd-MMM"};
    var dates = from s in stringDates
                let dt = Parse(s, patterns)
                where dt.HasValue
                select dt.Value;

    foreach( var d in dates)
        Console.WriteLine(d.ToShortDateString());

    Console.ReadLine();
}

我们得到了相同的结果;)

关于c# - dd-MMM-yyyy 和 dd-MMM 的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858413/

相关文章:

java - 传递带有异常的枚举 - Java

java - 关于何时应该将直接缓冲区与 Java NIO 一起用于网络 I/O 的简单规则?

c# - 将带有列表的字符串添加到多行文本框

javascript - 这段 ASP.NET 代码有什么问题吗?文本框值未设置

c# - 使用 Dragula 在应用程序中拖放 WebDriver

c# - 变量在循环中保留其值?

c# - 将包含整数的字符串解析为 List<int>

java - 如何在android中创建一个全局变量?

asp.net - 从 ASP.NET 工作进程 ID 获取性能计数器实例名称 (w3wp#XX)

c# - 在 C# 中调用 SQL 连接方法