Вы можете воспользоваться тем, что в Scala Регулярные выражения также являются " extractors ".
scala> var PairWithSpaces = "(\\w+)\\s+(\\w+)".r
PairWithSpaces: scala.util.matching.Regex = (.+)\s+(.+)
scala> val PairWithSpaces(l, r) = "1 17"
l: String = 1
r: String = 17
Теперь вы можете встроить свой экстрактор в естественно выглядящую "карту":
scala> Array("a b", "1 3", "Z x").map{case PairWithSpaces(x,y) => (x, y) }
res10: Array[(String, String)] = Array((a,b), (1,3), (Z,x))
Возможно, это излишне для вас, но может действительно помочь читаемости, если ваше регулярное выражение станет интересным.Мне также нравится, как этот подход быстро провалится, если задана недопустимая строка.
Предупреждение, не уверен, что регулярное выражение соответствует именно тому, что вам нужно ...