如何安全地拆分字符串并检查两个值

时间:2016-08-08 17:19:50

标签: scala

如果我这样做会引发异常:

"".split('=')(1)

是否有一种在scala中安全地进行此类操作的自觉方式?

2 个答案:

答案 0 :(得分:8)

scala> "".split('=').lift(1)
res0: Option[String] = None

scala> "a=b".split('=').lift(1)
res2: Option[String] = Some(b)

请注意,隐式转换后的Array是从索引到值的部分函数。您可以lift任何部分函数,​​以便代替值或异常(如果未在给定参数中定义),它将分别返回Some(value)None

答案 1 :(得分:1)

可能的解决方案:

s.split("=") match {
  case a@Array(_, _) =>
    Some(a)
  case _ =>
    None
}

但通常你会添加一些逻辑:

s.split("=") match {
  case Array(x, y) =>
    Some(x.toInt * y.toDouble)
  case _ =>
    None
}