Есть ли способ преобразовать строку с несколькими десятичными точками в двойную в Scala? - PullRequest
1 голос
/ 26 сентября 2019

Допустим, у меня есть строки типа "9....3" и "0........3" и ".......2". Можно ли преобразовать их в двойные, такие как 9.3 и 0.3 и 0.2 в Scala?Очевидно, что использование toDouble не сработает.

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Вот подход соответствия шаблону регулярных выражений

def multipleDotsToDouble(s: String): Option[Double] = {
  val Pattern = """(\d*)(\.*)(\d*)""".r
  s match {
    case Pattern(h,_,t) => s"$h.$t".toDoubleOption
    case _ => None
  }
}

multipleDotsToDouble(".......2")

, который выводит

res6: Option[Double] = Some(0.2)
3 голосов
/ 26 сентября 2019

Во-первых, давайте заменим все последовательные точки на одну.Затем попытайтесь разобрать строку.

"9....3".replaceAll("\\.{2,}", ".").toDoubleOption.getOrElse(default = 0.0d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...