0

我正在尝试根据正则表达式匹配自动将字符串转换为日期。到目前为止,我的代码如下:

package be.folks.date

import java.util.Date
import scala.util.matching.Regex
import org.joda.time.format.DateTimeFormat

class StringToDate(underlying:String) {

  val regmap : Map[Regex, String] = Map(
    ("""\d\d-\d\d-\d\d\d\d""".r, "dd-MM-yyyy"),
    ("""\d\d-\w\w\w-\d\d\d\d""".r, "dd-MMM-yyyy")
  )

  def toDate() : Date = { 
    DateTimeFormat.forPattern((regmap collectFirst { case (_(underlying) , v) => v  } get)).parseDateTime(underlying).toDate()
  }

}

object StringToDate {
  implicit def +(s:String) = new StringToDate(s)
}

但是,我收到一个错误“_” - )预期但发现(。

我该如何纠正?

4

1 回答 1

1

我不确定我是否理解您应用正则表达式的语法。也许,在toDate,你想要:

regmap collectFirst {
    case (pattern , v)  if((pattern findFirstIn underlying).nonEmpty) => v}

我也不会使用get从选项中提取字符串,因为如果找不到匹配的正则表达式,它会引发异常。我不知道你想如何在你的代码中管理这种情况,所以我不能给你建议。

于 2013-01-01T12:06:45.680 回答