代码之家  ›  专栏  ›  技术社区  ›  Pablojim

使用Groovy从“会议日期为2009年12月12日13:00”中提取日期

  •  2
  • Pablojim  · 技术社区  · 16 年前

    正如标题所述,我有一个字符串类似于:

    “会议时间为2009年12月12日13:00”

    在Groovy中实现这一点的优雅而健壮的方法是什么

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ted Naleid    16 年前

    为此,我将使用正则表达式和groovy“find”添加到String类中。这里有一个简单的正则表达式,可以用于您的测试用例。它可能需要根据您对输入字符串的松弛程度进行调整。

    import java.text.SimpleDateFormat
    
    def extractDate(s) {
        s.find(/(\d\d-[A-Z]{3}-\d{4}).*(\d\d:\d\d)/) { full, date, time -> 
            return new SimpleDateFormat("dd-MMM-yyyy HH:mm").parse("$date $time")
        }
    }
    println extractDate("lorem ispom 12-DEC-2009 fsasdfsd 12:00")
    println extractDate("the meeting is on 12-DEC-2009 at 13:00")
    

    Sat Dec 12 12:00:00 CST 2009
    Sat Dec 12 13:00:00 CST 2009