拆分数组中的字符串并转换为map

时间:2017-03-10 14:47:56

标签: scala

我正在阅读由a=b格式的行组成的文件。 使用Source.fromFile("file").getLines我得到Iterator[String]。我想我需要将字符串拆分为元组,然后从元组中形成地图 - 这很容易。我无法从Iterator[String]转到Iterator[(String,String)]

我该怎么做?我是scala的初学者,没有功能编程经验,所以我很容易接受替代方案:)

4 个答案:

答案 0 :(得分:1)

您可以通过拆分字符串,然后使用Iterator.map从第一个和第二个元素创建元组来实现:

val strings = List("a=b", "c=d", "e=f").iterator
val result: Iterator[(String, String)] = strings.map { s =>
  val split = s.split("=")
  (split(0), split(1))
}

如果你不介意额外的迭代和中间收集,你可以使它更漂亮:

val result: Iterator[(String, String)] =
  strings
   .map(_.split("="))
   .map(arr => (arr(0), arr(1)))

答案 1 :(得分:0)

您可以使用map方法转换迭代器返回的值:

def map[B](f: (A) ⇒ B): Iterator[B]

答案 2 :(得分:0)

也许是这样的?

Source.fromFile("file").getLines.map(_.split("=").map( x => (x.head,x.tail) ) )

您可能希望将其包装到Try

答案 3 :(得分:0)

这是我的尝试:

 val strings = List("a=b", "c=d", "e=f")
 val map = strings.map(_.split("=")).map { case Array(f1,f2) => (f1,f2) }