29 lines
788 B
Scala
29 lines
788 B
Scala
import scala.io.Source
|
|
|
|
object parseCSV extends App {
|
|
|
|
val rawData = """|C1,C2,C3,C4,C5
|
|
|1,5,9,13,17
|
|
|2,6,10,14,18
|
|
|3,7,11,15,19
|
|
|20,21,22,23,24""".stripMargin
|
|
|
|
val data = Seq((Source.fromString(rawData).getLines()).map(_.split(",")).toSeq: _*)
|
|
|
|
val output = ((data.take(1).flatMap(x => x) :+ "SUM").mkString(",") +: // Header line
|
|
data.drop(1).map(_.map(_.toInt)). // Convert per line each array of String to array of integer
|
|
map(cells => (cells, cells.sum)). //Add sum column to assemble a tuple. Part 1 are original numbers, 2 is the sum
|
|
map(part => s"${part._1.mkString(",")},${part._2}")).mkString("\n")
|
|
|
|
println(output)
|
|
/* Outputs:
|
|
|
|
C1,C2,C3,C4,C5,SUM
|
|
1,5,9,13,17,45
|
|
2,6,10,14,18,50
|
|
3,7,11,15,19,55
|
|
20,21,22,23,24,110
|
|
|
|
*/
|
|
}
|