斯卡拉 - 正则表达式

时间:2017-10-17 23:59:42

标签: regex scala

我是scala的新手。我不是正则表达式的新手,但scala的正则表达式对我来说有点混乱。例如,我的输入变量是“DEVICE”列的字符串

enter image description here

我想将名称从上组转换为“TABLET”,从中组转换为“DESKTOP”,然后休息为“PHONE”,如下所示。最优雅的方式是什么?

"IOSTABLET" => "TABLET"
"ANDROIDTABLET" => "TABLET"
"TABLET"  => "TABLET"
"SAFARI" => "DESKTOP"
...

这是我使用模式匹配的解决方案

val tablet = """.*(TABLET)$""".r
val phone = """.*(PHONE)$""".r


"IOSTABLET" match {
  case tablet(device) => "TABLET"
  case phone(device) => "PHONE"
  case _ => "DESKTOP"
}

1 个答案:

答案 0 :(得分:2)

val myDevice = "IOSTABLET"

val translated = myDevice match {
   case "IOSTABLET" | "ANDROIDTABLET" | "TABLET" => "TABLET"
   case "SAFARI" | "IE" => "DESKTOP"
   case "etc" | "etc2" => "etc3"
}

这样的事情可能是最干净的方法。你可以使用正则表达式,但这里可能没有保证。