修改scala中的String列表

时间:2017-02-14 16:26:35

标签: scala

我有输入文件我想读取scala流然后修改每条记录然后输出文件。

我的输入如下 -

Name,id,phone-number
abc,1,234567
dcf,2,345334

我想更改以上输入 -

Name,id,phone-number
    testabc,test1,test234567
    testdcf,test2,test345334

我正在尝试将文件读取为scala流,如下所示:

val inputList = Source.fromFile("/test.csv")("ISO-8859-1").getLines

在上面的步骤之后我得到Iterator [String]

val newList = inputList.map{line => 
              line.split(',').map{s =>
                "test" + s
              }.mkString (",")
          }.toList

但新列表为空。 我不确定我是否可以定义一个空列表和空数组,然后将修改后的记录追加到列表中。 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这是一种返回List[Array[String]]的类似方法。如果您想要返回mkString,可以使用toStringString或类似内容。

scala> scala.io.Source.fromFile("data.txt")
  .getLines.drop(1)
  .map(l => l.split(",").map(x => "test" + x)).toList

res3: List[Array[String]] = List(
  Array(testabc, test1, test234567), 
  Array(testdcf, test2, test345334)
)

答案 1 :(得分:1)

您可能希望将迭代器转换为流

val l = Source.fromFile("test.csv")
    .getLines()
    .toStream
    .tail
    .map { row =>
      row.split(',')
        .map { col =>
         s"test$col"
        }.mkString (",")
     }

  l.foreach(println)
  

testAbc的,为test1,test234567

     

testdcf,TEST2,test345334