Scala映射[Regex,String]第一个错误
我正在尝试根据正则表达式匹配自动将字符串转换为日期。我的代码如下:Scala映射[Regex,String]第一个错误,regex,scala,Regex,Scala,我正在尝试根据正则表达式匹配自动将字符串转换为日期。我的代码如下: 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
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)
}
但是,我得到了一个““-”)的错误,预期结果是(
如何更正此问题?我不确定是否理解您应用正则表达式的语法。也许,在
toDate
中,您需要:
regmap collectFirst {
case (pattern , v) if((pattern findFirstIn underlying).nonEmpty) => v}
我也不会使用
get
从选项中提取字符串,因为如果找不到匹配的正则表达式,它会引发异常。我不知道您希望如何在代码中管理这种情况,因此我无法给您提供建议。我将把它保留为get的异常:)