我正在尝试根据正则表达式匹配自动将字符串转换为Date。到目前为止我的代码如下:
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)
}
但是,我收到的错误是“_” - )预期但找到了(。
我该如何纠正?
答案 0 :(得分:1)
我不确定我理解您应用正则表达式的语法。也许,在toDate
,您想要:
regmap collectFirst {
case (pattern , v) if((pattern findFirstIn underlying).nonEmpty) => v}
我也不会使用get
从选项中提取字符串,因为如果找不到匹配的正则表达式会抛出异常。我不知道你想如何在你的代码中管理这种情况,所以我不能给你建议。