从字符串中检索元组

时间:2016-07-27 14:32:29

标签: scala

我有以下输入字符串:

"0.3215,Some(0.5123)"

我想使用:(0.3215,Some(0.5123))检索元组(BigDecimal,Option[BigDecimal])

这是我到目前为止所做的一件事:

"\\d+\\.\\d+,Some\\(\\d+\\.\\d+".r findFirstIn iData match {
  case None => Map[BigDecimal, Option[BigDecimal]]()
  case Some(s) => {
    val oO = s.split(",Some\\(")
    BigDecimal.valueOf(oO(0).toDouble) -> Option[BigDecimal](BigDecimal.valueOf(lSTmp2(1).toDouble))
  }
}

使用Map并将其转换为元组。

当我直接尝试元组时,我得到EqualsObject

这里一定要错过......

1 个答案:

答案 0 :(得分:4)

您的代码有几个问题,但最重要的一点似乎是匹配的case None方会返回Map,但Some(s)方会返回Tuple2MapTuple2统一到他们最常见的超类型Equals,这就是您所看到的。

我认为这是你想要实现的目标?

val Pattern = "(\\d+\\.\\d+),Some\\((\\d+\\.\\d+)\\)".r
val s = "0.3215,Some(0.5123)"
s match {
  case Pattern(a,b) => Map(BigDecimal(a) -> Some(BigDecimal(b)))
  case _ => Map[BigDecimal, Option[BigDecimal]]()
}
// Map[BigDecimal,Option[BigDecimal]] = Map(0.3215 -> Some(0.5123))