2013-01-01 47 views
0

我想基于正则表达式匹配自动将字符串转换为日期。我的代码到目前为止是如下:斯卡拉地图[正则表达式,字符串] collectFirst错误

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) 
} 

不过,我得到一个错误“_” - 但却发现()

我该如何解决这个

回答

1

我? 。不知道我理解你的语法应用正则表达式也许,在toDate,你想:

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

我也不会用get从选项中提取的字符串,因为它扔如果找不到匹配的正则表达式,则是一个例外。我不知道如何在代码中管理这种情况,所以我不能给你提供建议。

+0

我打算把它留在例外:) – 0n4li

相关问题