scala学习笔记(8)文件和正则表达式
1.读取行
----------------------------------------
要读取文件中所有的行,可以调用scala.io.Source对象的getLine方法:
import scala.io.Source val source =Source.fromFile("myfile.txt","UTF-8")//第一个参数可以是字符串或者java.io.File
val lineIterator = source.getLines
结果是一个迭代器,可以用其来逐条处理行
for(1<- lineIterator) 处理1
或者可以对其迭代器应用toArray或者toBuffer方法,将这些放到数组或者数组缓冲中去:val lines = source.getLines.toArray
val contents = source.mkString //将整个文件读取成为字符串
2.读取字符
-----------------------------------
要从文件中读取单个字符,可以直接把source当做迭代器,因为source 扩展自Iterator[Char]
for(c <- source) 处理c
如果想查看某个字符单数又不处理的话,调用souce对象的buffered方法,这样可以用head方法查看一下字符,但是同时并不把其当做已经处理的字符集
val source = Source.fromFile("myfile.txt","UTF-8")
val iter = source.buffered
while(iter.hasNext){
if(iter.head 是符合预期的)
处理iter.next
else
..........
}
source.close()
import scala.io.Source;
Source.fromFile("e:/hello.txt").mkString //将其转换成字符串
3.读取此法单元和数字
-------------------------------------
val tokens =source.mkString.split("//S+") //很快的读取源文件中所有以空格隔开的词法单元
将字符转转换成为数字,可以用toInt或者toDouble方法。
val numbers = for(w <- tokens) yield w.toDouble
//或者
val numbers = tokens.map(_.toDouble) //记住,你总是可以使用java.util.Scanner类来处理同时包含文本和数字的文件
//从控制台读取数据
print("How old are you ") //在缺省的情况下系统会自动的使用Consle,因此不需要对print和readInt使用限定词
val age = readInt() //或者使用readDoubel或者readLong
//通过正则表达式
import scala.io.Source;
/**
* Created by stone on 2018/9/17.
*/
object FileDemo {
def main(args: Array[String]): Unit = {
val s = Source.fromFile("E:\\hello.txt","gb2312");
val lines = s.getLines;
//进行迭代
for(line <- lines){
println(line);
}
val str = Source.fromFile("E:\\hello.txt","gb2312").mkString;
val it = str.split("\\s+");
for(i<-it){
println(i);
}
}
}
正则表达式
----------------------------------
(1)href正则表达式
Pattern p =Pattern.compile("<a\\s*href=\"([\u0000-\uffff&&[^u005c\u0022]]*)\""); Matcher m = p.matcher(str); while(m.find()){ String s = m.group();
System.out.println(s);
}
最新文章
- Java开发中经典的小实例-(打印输入重复的值)
- c++程序员必知的几个库
- Atitit usrQBM2331 参数格式化规范
- Java 第一天
- LoadRunner error -27728
- Nginx常见502错误
- HttpWebRequest BeginGetResponse EndGetResponse
- 利用Navicat实现MySQL数据库结构对比和同步
- Hadoop日志以及日志的格式和命名组成
- 如何去掉修改Joomla、joomlart及其模版版权、标志、图标的方法
- arcgis api 4.x for js 结合 react 入门开发系列";esri-loader";篇(附源码下载)
- Injection
- mybatis根据数据库表结构自动生成实体类,dao,mapper
- linux解压类型总结
- 【iCore4 双核心板_FPGA】例程四:Signal Tapll 实验——逻辑分析仪
- 整型数字转utf8
- 微软BI 之SSRS 系列 - 如何实现报表导航 Navigation 和钻取 Drill Down 的效果
- jboss5+EJB3+MDB Queue
- 每日英语:Does Evolution Want Us To Be Unhappy?
- SAP ECC6安装系列三:关于SAP,你也许想知道的一些事