Scala读取文件并拆分并修改每一行

mac*_*ers 3 java functional-programming scala

我是Scala的新手.我想从文本文件中读取行并拆分并对每行进行更改并输出它们.

这是我得到的:

 val pre:String = " <value enum=\""
 val mid:String = "\" description=\""
 val sur:String = "\"/>"

 for(line<-Source.fromFile("files/ChargeNames").getLines){
    var array = line.split("\"")
    println(pre+array(1)+mid+array(3)+sur);
 }
Run Code Online (Sandbox Code Playgroud)

它的工作原理是面向对象的编程方式而不是函数式编程方式.

我想熟悉Scala,以便任何能够以函数式编程方式更改代码的人?

谢谢.

1es*_*sha 9

一次遍历,没有额外的记忆

 Source
  .fromFile("files/ChargeNames")
  .getLines
  .map { line =>
    //do stuff with line like
    line.replace('a', 'b')
  }
  .foreach(println)
Run Code Online (Sandbox Code Playgroud)

@ziggystar表示,代码更快一点

Source
  .fromFile("files/ChargeNames")
  .getLines
  .foreach { line =>
    //do stuff with line like
    println(line.replace('a', 'b'))
  }
Run Code Online (Sandbox Code Playgroud)

  • @SergeyPassichenko你知道`getLines`返回一个`Iterator [String]`?两种情况都有一次遍历.所以答案没有多大意义(评论和第二个代码块).虽然第二块因其他原因而更具性能. (3认同)

ste*_*red 5

val ans = for (line <- Source.fromFile.getLines) yield (line.replace('a', 'b')
ans foreach println
Run Code Online (Sandbox Code Playgroud)