用于提取文件名及其可能的扩展名
val pat = """(.*)[.]([^.]*)""".r
"myfilename.myext" match {
case pat(fname,ext) => doSomething(fname, ext)
}
然而,缺少扩展名的模式匹配失败,
"myfilename" match {
case pat(fname,ext) => doSomethingElse(fname)
}
使用(可能的)扩展名提取文件名的简洁而优雅的方法是什么?
答案 0 :(得分:2)
我不会对这种模式感到兴奋,甚至对使用null
感到兴奋,但是这个应该有效:
val pattern = "(.*?)(?:[.]([^.]*))?".r
"myfilename.ext" match {
case pattern(name, null) => println(s"$name")
case pattern(name, ext) => println(s"$name.$ext")
}