Scala--文件和正则表达式
一、读取行
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--文件和正则表达式的更多相关文章
- Scala学习(九)---文件和正则表达式
文件和正则表达式 摘要: 在本篇中,你将学习如何执行常用的文件处理任务,比如从文件中读取所有行或单词,或者读取包含数字的文件等.本篇的要点包括: 1. Source.fromFile(...).get ...
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...
- scala文件通过本地命令运行
1.准备(检查) a.本地环境安装jdk b.安装scala 2.sublime编辑scala文件,并存放到F:\plan_next\scala_compile下 3.文件目录中切换到cmd中(文件目 ...
- 创建好maven项目以后发现无法创建scala文件
今天创建了一个maven项目 然后准备创建scala文件的时候发现没有Scala 然后只好上网上找方法了 下面是一种解决方法 1.点击file,选择settings 进去之后,选择build 进去 ...
- Scala学习九——文件和正则表达式
一.本章要点 Source.fromFile(...).getLines.toArray输出文件的所有行; Source.fromFile(...).mkString以字符串形式输出文件内容; 将字符 ...
- scala学习笔记(8)文件和正则表达式
1.读取行 ---------------------------------------- 要读取文件中所有的行,可以调用scala.io.Source对象的getLine方法: import sc ...
- 快学Scala-第九章 文件和正则表达式
知识点: 1.读取文件中的所有行,可以调用scala.io.Source对象的getLines方法: import scala.io.Source val source = Source.from(& ...
- Scala文件操作
Scala中的文件操作基本可以依赖于Java的实现,包括输入.输出流的使用. object FileOps {def main(args: Array[String]) { val file = So ...
- Python 入门学习(贰)文件/文件夹正则表达式批量重命名工具
基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 思路 Project 2 是一个去除文件名中所有数 ...
- 【std::regex】C++文件路径正则表达式
今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过. std:: ...
随机推荐
- C# 如何防止重放攻击
重放攻击 重放攻击是指黑客通过抓包的方式,得到客户端的请求数据及请求连接,重复的向服务器发送请求的行为. 比如你有一个 “购买” 的操作,当你点击购买按钮时,向服务器发送购买的请求.而这时黑客对你的请 ...
- 设定linux为多用户模式
1.显示系统已经安装的组件,和可以安装的组件: #yum grouplist 2.如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装: #yum groupinstall " ...
- oracle数据库occi接口写入中文乱码解决方法
将初始化代码中 Environment::createEnvironment(Environment::DEFAULT); 改为 Environment::createEnvironment(“UTF ...
- [钉钉通知系列]SVN提交后自动推送消息到钉钉群
钉钉设置机器人配置 1.进入配置机器人入口 2.添加机器人 3.测试WebHook请求 本人使用Postman进行测试 4.配置SVN 4.1 配置 Pre-commit hook 设置提交内容必须包 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(2) -如何做好登录界面
一. 做了一个大胆的决定,官网首页便是登录界面 BugDone,Bug管理工具的定位就是一款非常易用的工具,所以我们没有像其它平台那样进官网首页都是一些功能和业务的介绍. 我们觉得方便用户快速进入工作 ...
- 重学C语言---03数据和C
1.数据的必要性.数据使我们生活中不可缺少的东西,程序也是如次,离不开数据.将文字.图片和单词等输入到算计,将其展现出来或者做一系列操作等. 2.实例程序. /*rhodium.c--用金属铑衡量体重 ...
- Django之FBV&CBV
CBV与FBV是django视图中处理请求的两种方式 FBV FBV也就是function base views,字面意思函数基础视图,使用函数的方式处理请求url分发中添加的参数为视图处理函数名, ...
- 【转】HTTP学习---Web 缓存
[原文]https://www.toutiao.com/i6592743068623962632/ 1. 前端缓存概述 前端缓存主要是分为HTTP缓存和浏览器缓存.其中HTTP缓存是在HTTP请求传输 ...
- FinalShell使用---Xshell的良心国产软件
最近发现了一款同类产品FinalShell,还是一块良心国货.初步体验了一下,确实是良心之作.且免费(通用版),支持国货. FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还 ...
- <button>与<input type="button">
在做form表单,点击按钮随机生成两串密钥的时候 1.用第一种按钮的时候,会出现刷新form表单的现象.会把创建密钥前面的输入框中的字消失.虽然能生成密钥1和密钥2,但是会闪一下,随即消失.几个输入框 ...