我正在尝试(如果可能的话)获得 Scala 匹配/案例语句来为我执行内联正则表达式匹配。
具体来说,我有一个将运行 match
的方法,如果该方法的输入以字符串“fizz”开头,那么我希望 match 语句选择正确的大小写:
def animalToSound(animal : String) : String = {
animal match {
case "duck" => "quack"
case "lion" => "roar"
case "dog" => "woof"
case matchesFizzRegex(animal) => "heyo!"
case _ => "meow"
}
}
def matchesFizzRegex(animal : String) : ??? = {
val fizzRegex = "fizz*".r
if(fizzRegex.match(animal)) {
???
} else {
???
}
}
因此,如果我调用
animalToSound("fizzBuzz")
,那么所需的行为是:有什么想法可以让我正常工作吗?
最佳答案
简单明了
使用字符串的 pattern matching with guards
和 matches
方法
def animalToSound(animal : String) : String = animal match {
case "duck" => "quack"
case "lion" => "roar"
case "dog" => "woof"
case x if x matches "fizz.*" => "heyo!"
case _ => "meow"
}
关于regex - 带有内联正则表达式的 Scala 匹配语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39893255/