我想從那些在斯卡拉形式的多個字符串中提取的日期(例如2015-01-01
):提取日期高效
val s = "basedir/somedir/tmp/BLAH/2015-01-01.txt"
我知道我可以做基本的字符串分割裝飾條操作爲了實現這一點,但是在Scala中有更簡潔的方法嗎?我可以使用Scala提供的一些不錯的正則表達式「隱藏功能」來執行此操作嗎?使用正則表達式提取
val regex = ".*/(\\d{4}-\\d{2}-\\d{2}).txt".r //remove/after .* if you think its not needed.
str match {
case regex(date) => Some(date)
case _ => None
}
使用上面的代碼,而不是下面
val s = "basedir/somedir/tmp/BLAH/2015-01-01.txt"
val regex = "(\\d+)-(\\d+)-(\\d+).txt"
val regex(year, month, date) = s
如果我還想提取「YYYY-MM-dd.txt」文件所在的目錄,該怎麼辦?那麼,假設我想提取(「BLAH」,「'2015-01-01」)作爲一個元組而不僅僅是「2015-01-01」?謝謝。 –
@ Darth.Vader編輯了答案並補充了要你最後想看看 – pamu
@ Darth.Vader基本上改變了正則表達式來合併dir也 – pamu