簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM