Scala 在数组中拆分字符串并转换为映射
我正在读取一个由行组成的文件,格式为Scala 在数组中拆分字符串并转换为映射,scala,Scala,我正在读取一个由行组成的文件,格式为a=b。 使用Source.fromFile(“file”).getLines我得到了一个迭代器[String]。我想我需要将字符串拆分为元组,然后从元组形成映射-这很简单。我无法从迭代器[String]转到迭代器[(String,String)] 我该怎么做?我是scala的初学者,对函数式编程没有经验,因此我接受其他方法:)您可以使用map方法转换迭代器返回的值: 定义映射[B](f:(A)⇒ B) :Iterator[B]您可以通过拆分字符串,然后使用I
a=b
。
使用Source.fromFile(“file”).getLines
我得到了一个迭代器[String]
。我想我需要将字符串拆分为元组,然后从元组形成映射-这很简单。我无法从迭代器[String]
转到迭代器[(String,String)]
我该怎么做?我是scala的初学者,对函数式编程没有经验,因此我接受其他方法:)您可以使用
map
方法转换迭代器返回的值:
定义映射[B](f:(A)⇒ B) :Iterator[B]您可以通过拆分字符串,然后使用
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)))
也许是这样
Source.fromFile("file").getLines.map(_.split("=").map( x => (x.head,x.tail) ) )
您可能希望将其包装为Try
这是我的尝试:
val strings = List("a=b", "c=d", "e=f")
val map = strings.map(_.split("=")).map { case Array(f1,f2) => (f1,f2) }
非常抱歉,我不明白您的回答可能在尾部也使用了mkString(“=”)
,因此您确定您有(String,String),无论有多少次拆分。