第九章:文件与正则表达式

第九章:文件与正则表达式

标签(空格分隔): scala课后习题


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

def reverseFileLine(fileName : String)={
        val source = Source.fromFile(fileName);
        val reverseContent = source.toArray.reverse
        val out  = new PrintWriter(fileName)
        reverseContent.foreach(out.print)
        out.close()
        source.close()
    }

    reverseFileLine("D:/aa.txt")

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

def replaceTabWithSpace(fileName : String):Unit={
        val source = Source.fromFile(fileName);
        val tabPattern = """\t""".r
        val result = new ArrayBuffer[String]()
        source.getLines().foreach(result += tabPattern.replaceAllIn(_ ,"     "))
        val out  = new PrintWriter(fileName)
        result.foreach(line => out.write(line + "\n"))
        source.close()
        out.close()

    }

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

    def wordCounter(fileName : String):Unit={
        Source.fromFile(fileName).mkString.split("""\s+""").filter(_.length>12).foreach(println(_))
    }

但是这样有个问题,就是流还没有关闭。

4.编写Scala程序,从包含浮点数的文本文件读取内容,打印出文件中所有浮点数之和,平均值,最大值和最小值

    def printlnFloatValue(fileName : String):Unit={
        val source = Source.fromFile(fileName);
        val nums = source.getLines().mkString.split("""\s+""").map(_.toDouble)
        println(nums.sum)
        println(nums.min)
        println(nums.max)
        println(nums.sum/nums.length)
        source.close()
    }

后面的题就不想写了,基本上都是这么几个方法,只是正则表达式不同。关键正则表达式的知识可以额外自己去查。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值