[英]Scala pattern matching filename and possible extension
用於提取文件名及其可能的擴展名
val pat = """(.*)[.]([^.]*)""".r
"myfilename.myext" match {
case pat(fname,ext) => doSomething(fname, ext)
}
但是,模式匹配因缺少擴展名而失敗,
"myfilename" match {
case pat(fname,ext) => doSomethingElse(fname)
}
提取具有(可能)擴展名的文件名的一種簡短而優雅的方法是什么?
我對這種模式並不感到興奮,甚至對使用null
都不感到興奮,但是這種模式應該可以工作:
val pattern = "(.*?)(?:[.]([^.]*))?".r
"myfilename.ext" match {
case pattern(name, null) => println(s"$name")
case pattern(name, ext) => println(s"$name.$ext")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.