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);
}
scala学习笔记(8)文件和正则表达式的更多相关文章
- [Scala]Scala学习笔记六 文件
1. 读取行 读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法: val source = Source.fromFile(&qu ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Django:学习笔记(8)——文件上传
Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...
- APUE学习笔记3_文件IO
APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...
- 【数学建模】MATLAB学习笔记——函数式文件
MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...
随机推荐
- 自定义springmvc参数解析器
实现spring HandlerMethodArgumentResolver接口 通过使用@JsonArg自定义注解来解析json数据(通过fastjson的jsonPath),支持多个参数(@Req ...
- week3 作业
1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1.1 创建文件 touch FILE mkdir DIR mkdir -p DIR1/DIR2/DIR3/ 递归创建子目 ...
- Iterator(遍历器) 和 for...of 循环
是generator的前置知识 generator :https://www.cnblogs.com/wangtong111/p/11322961.html 遍历器(Iterator)就是这样一种机制 ...
- File类 ReadAllBytes() ReadAllLines() ReadAllText()
用 File 类里的 ReadAllLines方法读取文件string[] contents = File.ReadAllLines(@"F:\Users\zhuotu003\Desktop ...
- SQL Server阻塞blocking案例分析
今天在性能测试过程中发现大量阻塞报警,检查whoisactive(https://github.com/amachanic/sp_whoisactive/)数据发现,阻塞blocking头部sessi ...
- __proto__ VS. prototype in JavaScript
__proto__ VS. prototype in JavaScript http://dmitrysoshnikov.com/ecmascript/javascript-the-core/#a-p ...
- Zabbix通过SNMP监控HP Gen10服务器的硬件
http://www.zmzblog.com/monitor/zabbix-how-to-monitoring-hp-gen10-server-hardware.html
- java hashset输出
for (Map.Entry<String, String> me : id_label_map.entrySet()) { System.out.println(me.getKey() ...
- Java定时器Timer
Java定时器Timer在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划任 ...
- ES6标准入门 第四章:字符串的扩展
1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...