Scala 玩玩而已

1 编写一小段Scala代码,将某个文件中的行倒转顺序(将最后一行作为第一行,依此类推)

import io.Source
import java.io.PrintWriter
//不导包 io.Source.fromFile(path)
val path = new PrintWriter("/home/mztt/test.txt")
Source.fromFile("book.txt").getLines.toList.map(_.reverse).reverse.foreach(x=>path.write(x+"\n"))
//关闭 
path.close()

2 编写Scala程序,从一个带有制表符的文件读取内容,将每个制表符替换成一组空格,使得制表符隔开的n列仍然保持纵向对齐,并将结果写入同一个文件

Source.fromFile("book.txt").getLines.map(x=>x.replaceAll("\t"," ")).foreach(print) //写入文件跟第一步一样省略了

3. 编写一小段Scala代码,从一个文件读取内容并把所有字符数大于12的单词打印到控制台。如果你能用单行代码完成会有额外奖励

//有瑕疵
io.Source.fromFile("/home/mztt/test.txt").getLines.map(x=>x.split("\\s+").filter(_.length>12).foreach(print)).foreach(println)
//()
//()
//makealonglonglonglongdream()
//longdream()
//后来 看别人的 发现有mkString
 io.Source.fromFile("/home/mztt/test.txt").mkString.split("\\s+").foreach (str => if(str.length()>12) println(str))

显示列表:toString方法和mkString方法
toString操作返回列表的标准字符串表达形式
mkString方法: mkString(pre, sep, post)
mkString方法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中

scala> val li = List("abcd","egf","fffff")
li: List[String] = List(abcd, egf, fffff)

scala> li.mkString
res16: String = abcdegffffff

scala> li
res17: List[String] = List(abcd, egf, fffff)

scala> li.toString
res18: String = List(abcd, egf, fffff)


未完待续。。

猜你喜欢

转载自blog.csdn.net/qq_42898087/article/details/83041433
今日推荐