一、读取行

  import scala.io.Source

  val source = Source.fromFile("D:\\documents\\Scala\\MyDemo\\t.txt", "UTF-8")

  val lineIterator = source.getLines() //获取文件行的迭代器
for(l <- lineIterator){
println(l)
} val array = source.getLines().toArray //把行放到Array中
for(l <- array){
println(l)
} val context = source.mkString //把整个文件读取成一个字符串
println(context) source.close()

读取文件这里不能重复读取,只显示一遍文本内容

111111111
22222222222222222
3333333333

二、读取字符

  import scala.io.Source

  val source = Source.fromFile("D:\\documents\\Scala\\MyDemo\\t.txt","UTF-8")

  for(c <- source){  //一个字符一个字符迭代 Source扩展自 Iterator[Char]
print(c)
} val iter = source.buffered //使用bufferd方法,用head获取字符 while(iter.hasNext){
if(iter.head == 'a'){
iter.next()
iter.next()
print(iter.head)
}
else{
iter.next()
}
}

三、读取词法单元和数字

  import scala.io.Source
val source = Source.fromFile("D:\\sxt\\documents\\Scala\\MyDemo\\num.txt", "gbk")
val lines = source.getLines() //以行读取 for(l<- lines){
val tokens = l.split("\\s+") //将每行数据以空格隔开
for(i<- tokens){
print(i+",")
}; println() val numbers = tokens.map(_.toDouble) //将分割的字符串转换成double类型
for(n<- numbers){
print(n+"|")
}; println() val numbers1 = for(n<- tokens) yield n.toDouble //将分割的字符串转换成double类型
for(n <- numbers1){
print(n+"-")
}; println() }

四、从URL或其他源读取

  import scala.io.Source
val source1 = Source.fromURL("http://www.baidu.com","UTF-8")
println(source1)
val source2 = Source.fromString("Hello World")
println(source2.mkString)
val source3 = Source.stdin
println(source3.mkString)

五、读取二进制文件

Scala没有读取二进制文件的方法,需要使用Java类库,

  import java.io.File
val file = new File("D:\\\\sxt\\\\documents\\\\Scala\\\\MyDemo\\\\t.txt")
val in = new FileInputStream(file)
val bytes = new Array[Byte](file.length.toInt) in.read(bytes) for(i <- 0 until bytes.length) print(bytes(i)) in.close()

结果:

文件内容:abcd
输出结果:979899100

六、写入文本文件

  val value = 100
val out = new PrintWriter("t1.txt")
for(i <- 0 to 100) out.println(i)
out.printf("%d ", value.asInstanceOf[AnyRef]) //格式化输出需要转换成 AnyRef
out.print("%d".format(value)) //通过String的format的方法完成格式化输出
out.close()

结果:

在项目工程目录下,生成t1.txt文件

七、访问目录

八、序列化

九、进程控制

十、正则表达式

  val numPattern = "[0-9]+".r  //通过 String的 r方法

  val wsnumwsPattern = """\s+[0-9]+\s+""".r  //"""...""" 原始字符串可包含反斜线或引号,不需要转义 "\\s+[0-9]+\\s+"

  for(matchString <- numPattern.findAllIn("99 apples, 87 bottles")) println(matchString) //findAllIn返回所有匹配项的迭代器

  val matches = numPattern.findAllIn("99 apples, 87 bottles").toArray //转换成数组
for(m<- matches) println(m) val m1: Option[String] = wsnumwsPattern.findFirstIn("99 apples, 87 bottles") //获得第一个匹配项
println(m1) val mp = numPattern.findPrefixOf("99 apples, 87 bottles") //获取开始部分匹配的
println(mp) val wsmp = wsnumwsPattern.findPrefixOf("99 apples, 87 bottles") //获取开始部分匹配
println(wsmp) val rm = numPattern.replaceAllIn("99 apples, 87 bottles","xx") //替换所有匹配的项
println(rm) val rmf = numPattern.replaceFirstIn("99 apples, 87 bottles","xx") //替换第一个匹配的项
println(rmf)

结果:


Some(  )
Some()
None
xx apples, xx bottles
xx apples, bottles

十一、正则表达式组

  val numitemPattern = "([0-9]+) ([a-z]+)".r  //通过()区分开,多个子表达式

  val numitemPattern(num, item) = "99 apples"   //单个匹配
println(num,item) for(numitemPattern(num, item)<- numitemPattern.findAllIn("99 apples, 87 bottles")){//多个匹配项提取分组内容
println(num,item)
}

结果

(99,apples)
(99,apples)
(87,bottles)

参考《快学Scala》

Scala--文件和正则表达式的更多相关文章

  1. Scala学习(九)---文件和正则表达式

    文件和正则表达式 摘要: 在本篇中,你将学习如何执行常用的文件处理任务,比如从文件中读取所有行或单词,或者读取包含数字的文件等.本篇的要点包括: 1. Source.fromFile(...).get ...

  2. Scala学习笔记--正则表达式基础知识、如何在scala内使用

    正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...

  3. scala文件通过本地命令运行

    1.准备(检查) a.本地环境安装jdk b.安装scala 2.sublime编辑scala文件,并存放到F:\plan_next\scala_compile下 3.文件目录中切换到cmd中(文件目 ...

  4. 创建好maven项目以后发现无法创建scala文件

    今天创建了一个maven项目  然后准备创建scala文件的时候发现没有Scala 然后只好上网上找方法了 下面是一种解决方法 1.点击file,选择settings 进去之后,选择build  进去 ...

  5. Scala学习九——文件和正则表达式

    一.本章要点 Source.fromFile(...).getLines.toArray输出文件的所有行; Source.fromFile(...).mkString以字符串形式输出文件内容; 将字符 ...

  6. scala学习笔记(8)文件和正则表达式

    1.读取行 ---------------------------------------- 要读取文件中所有的行,可以调用scala.io.Source对象的getLine方法: import sc ...

  7. 快学Scala-第九章 文件和正则表达式

    知识点: 1.读取文件中的所有行,可以调用scala.io.Source对象的getLines方法: import scala.io.Source val source = Source.from(& ...

  8. Scala文件操作

    Scala中的文件操作基本可以依赖于Java的实现,包括输入.输出流的使用. object FileOps {def main(args: Array[String]) { val file = So ...

  9. Python 入门学习(贰)文件/文件夹正则表达式批量重命名工具

    基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 思路 Project 2 是一个去除文件名中所有数 ...

  10. 【std::regex】C++文件路径正则表达式

    今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过. std:: ...

随机推荐

  1. 【读书笔记】iOS-网络-Cookie

    Cookie是HTTP协议在首个版本之后加入的一个重要组件.它向服务器提供了追踪会话状态的能力,同时又无须维持客户端与服务器之间的连接.在浏览器客户端,Cookie值是由服务器通过请求提供的,,然后被 ...

  2. 反射和动态加载bean 完成 通用servie

    最近我们部门有个小项目,用来管理这个公司所有项目用到的代码表,例如国家代码.行政区划代码等.这个项目的功能其实很少,就是简单的修改.查询.新增和逻辑删除.但是为每张表都写一套增删改查的页面和一套ser ...

  3. CSS布局之——对齐方式

    一.水平居中: (1). 行内元素的水平居中? 如果被设置元素为文本.图片等行内元素时,在父元素中设置text-align:center实现行内元素水平居中,将子元素的display设置为inline ...

  4. 《ECMAScript6标准入门》第三版--读书笔记

    2015年6月,ECMAScript 6正式通过,成为国际标准.尽管在目前的工作中还没有使用ES6,但是每项新技术出来总是忍不住想尝尝鲜,想知道ES6能为前端开发带来哪些变化?对自己的工作有哪些方面可 ...

  5. 搞定pycharm专业版的安装

    学习python也有一段时间了,装了python2,也装了python3.对于IDE当然首选了人人拍掌叫好的pycharm.其实作为小白,一开始的时候并不知道什么是IDE,什么是pychram,以为装 ...

  6. CSS| position定位和float浮动

    对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.rela ...

  7. EasyUI tree reload时更改参数的问题。

    [问题]很多时候,我们需要重新加载tree数据,不仅仅是简单地刷新,更多的是重定向了URL,其中就包括参数的调整. moduleTree = $('#tree').tree({ queryParams ...

  8. 关联与下钻:快速定位MySQL性能瓶颈的制胜手段

    本文根据DBAplus社群[2018年1月6日北京开源与架构技术沙龙]现场演讲内容整理而成. 讲师介绍 李季鹏 新炬网络数据库专家 专注于MySQL数据库性能管理及相关解决方案,目前主要从事MySQL ...

  9. Shell 脚本合集

    0. 说明  Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...

  10. CentOS7 中安装 MySQL

    0. 说明 参考 centos7.2安装MySQL CentOS 7 下 Yum 安装 MySQL 5.7 两种方式安装 MySQL 安装 MySQL(yum) & 安装 MySQL(yum) ...