2016-09-19 69 views
0

下面我有原始字符串的,我想将它转换为列表或元组或地图列表清单,基本上我需要通过的foreach原始字符串列表元组

val rawStr = "(foo,bar), (foo1,bar1), (foo3,bar3)" 

遍历我怎么会去它?

回答

2

分割使用任何(,),然后组串

rawStr.split(s"""[(|,|)]""").filterNot(s => s.isEmpty || s.trim.isEmpty) 
.grouped(2) 
.toList 
.map(pair => (pair(0), pair(1))).toList 

斯卡拉REPL

scala> val rawStr = "(foo,bar), (foo1,bar1), (foo3,bar3)" 
rawStr: String = "(foo,bar), (foo1,bar1), (foo3,bar3)" 

scala> rawStr.split(s"""[(|,|)]""").filterNot(s => s.isEmpty || s.trim.isEmpty).grouped(2).toList.map(pair => (pair(0), pair(1))).toList 
res13: List[(String, String)] = List(("foo", "bar"), ("foo1", "bar1"), ("foo3", "bar3")) 
+0

这是真棒! –

0

这一个也可以处理无效输入:

"\\(([^,]+{1})\\s*,\\s*([^,]+{1})\\)".r 
    .findAllMatchIn(rawStr) 
    .map(m => m.group(1) -> m.group(2)).toMap 

你可以给它

val rawStr = "(foo,bar,baz), (foo1,bar1), (foo3,bar3)" 

val rawStr = "(foo), (foo1,bar1), (foo3,bar3)" 

,它不会崩溃