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

ただし、「_」のエラーが発生します - ) expected but found (.

これを修正するにはどうすればよいですか?

4

1 に答える 1

1

正規表現を適用するための構文を理解しているかどうかわかりません。おそらく、 でtoDate、次のことが必要でした:

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

get一致する正規表現が見つからない場合は例外がスローされるため、オプションから文字列を抽出するためにも使用しません。コードでそのケースをどのように管理したいのかわかりませんので、提案することはできません。

于 2013-01-01T12:06:45.680 に答える