#string #scala
#строка #scala
Вопрос:
Мы хотели бы отформатировать следующую строку:
(1854288750,binance,live),(1854288751,bitrix,live)
в следующий класс case в Scala:
case class Account(login :String, platform: String, type: String)
Какой способ является наиболее эффективным, поскольку мы не хотим использовать replaceAll
Комментарии:
1. Вы имеете в виду, что хотите создать экземпляр этого класса?
Ответ №1:
Вы можете использовать сопоставление с образцом
case class Account(login :String, platform: String, aType: String)
object Application extends App {
//parse single string
def parse(input: String): Option[Account] = {
if (!input.startsWith("(") || !input.endsWith(")"))
return None
//split input to list using separator
input.substring(1, input.length).split(",").toList match {
//if format is correct return instance of your data class
case List(login, platform, aType) => Some(Account(login, platform, aType))
case _ => None
}
}
//parse list of strings
def parse(input: List[String]): List[Account] =
input.map(parse).flatMap(_.toList)
println(parse("(1854288750,binance,live)"))
println(parse("(1854288751,bitrix,live)"))
val input: List[String] = List("(1854288750,binance,live)", "(1854288751,bitrix,live)", "abc",
"(1854288750,binance,live", "1854288750,binance,live)")
//two-elements list
println(parse(input))
}