我想从那些在斯卡拉形式的多个字符串中提取的日期(例如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