【发布时间】:2017-12-13 21:58:22
【问题描述】:
我正在开发一个在字符串开头提取数字的函数。给定一个字符串,它应该返回一个 case 类 Success(包含在 Int 中提取的数字和字符串的其余部分),以防它在开头找到一个数字,否则返回一个 case Object Failure。
为此,我使用正则表达式模式匹配将数字和字符串的其余部分匹配到两个单独的变量中。然后我将数字转换为Int 并返回。
问题:当提供的字符串开头不包含数字时,模式匹配失败但我不知道如何检测它失败,以及何时返回我的失败。
有什么想法吗?
这是我的代码
sealed trait Result
case class Success(expr: String, result: Int) extends Result
case object Failure extends Result
def extractNumber(str: String) : Result = {
val pattern = "([0-9]+)(.*)".r
val pattern(count, rest) = str
if (pattern match failed) //How can I do that
return Failure
val number = count.toInt
return Success(rest, number)
}
extractNumber("100banana") match {
case Success(rest, nb) => println("sucess" + nb + ";" + rest)
case Failure => println("failure")
}
【问题讨论】: