как преобразовать список строк в case-класс? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть список строк, что-то вроде List("12345:$", "12346:$"), единственное, что мне нужно, это число "12345", которое перед двоеточием, это мой класс case, как я могу получить число и преобразовать его в класс case ? регулярное выражение хороший способ сделать это?

case class Account(accountId: String) 

Ответы [ 2 ]

2 голосов
/ 21 марта 2020

Нет необходимости в регулярных выражениях. Достаточно просто взять первый элемент из результата split(":"):

case class Account(accountId: String)

List("123:$", "456:$").map(s => Account(s.split(":")(0)))
// res1: List[Account] = List(Account("123"), Account("456"))

В случае, если предпочтение отдается регулярному выражению:

val pattern = """(\d*):.*""".r

List("123:$", "456:$", "xyz:$").collect{ case pattern(num) => Account(num) }
// res2: List[Account] = List(Account("123"), Account("456"))
1 голос
/ 21 марта 2020
Welcome to Scala 2.13.1 (OpenJDK 64-Bit Server VM, Java 1.8.0_222).
Type in expressions for evaluation. Or try :help.

scala> case class Account(accountId: String)
defined class Account

scala> List("123:$", "456:$").map{ case s"$id:$$" => Account(id) }
res0: List[Account] = List(Account(123), Account(456))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...