Scala模式匹配文件名和可能的扩展名

时间:2014-06-09 12:41:54

标签: scala pattern-matching

用于提取文件名及其可能的扩展名

val pat = """(.*)[.]([^.]*)""".r
"myfilename.myext" match { 
  case pat(fname,ext) => doSomething(fname, ext) 
}

然而,缺少扩展名的模式匹配失败,

"myfilename" match { 
  case pat(fname,ext) => doSomethingElse(fname) 
}

使用(可能的)扩展名提取文件名的简洁而优雅的方法是什么?

1 个答案:

答案 0 :(得分:2)

我不会对这种模式感到兴奋,甚至对使用null感到兴奋,但是这个应该有效:

val pattern = "(.*?)(?:[.]([^.]*))?".r
"myfilename.ext" match {
  case pattern(name, null) => println(s"$name")
  case pattern(name, ext) => println(s"$name.$ext")
}