您的位置:首页 > 其它

scala学习笔记10 文件和正则表达式

2016-08-09 01:15 471 查看


本章要点:

Source.fromFile().getLines.toArray输出文件的所有行
Source.fromFile().mkString以字符串形式输出文件内容
将字符串转换为数字 toInt  toDouble 
使用Java的PrintWriter写入文件
“正则”.r是一个Regex对象
如果你的正则表达式含有反斜杠或者引号,用""...""
如果正则表达式包含分组,你可以使用下列语法提取内容 for(regex(变量1,变量2,。。。,变量n)<-字符串)
1、读取行
import scala.io.Source
val source =Source.fromFile("myfile.txt","UTF-8")
val lineIterator =source.getLines
for (i<-lineIterator)  处理语句
两个参数分别是文件和编码(如果文件使用的是当前的缺省编码,可以省略)
val lines=source.getLines.[b]toArray[/b]
[b]val contents=source.[b]mkString[/b][/b]
用完Source对象后,记得close
2、读取字符
要从文件中读取单个字符,可以直接把Source当成迭代器,因为[b]Source类扩展自iterator[/b]
[b][b]val source =Source.fromeFile("myfile.txt","UTF-8")
[/b][/b]
[b][b]for(c<-source ) 处理c[/b][/b]
如果想查看但是不处理某个字符,调用source对象的buffered方法,这样你就可以用
head方法查看下一个字符,但同时不把它当成已处理的字符(实际上就是不断的重复循环读取字符)
3、读取词法单元和数字
val  numbers=source.mkString.split("\\s+") //+表示一个或者多个
4、从url或者其它源读取
val source1=Source.fromURL("http://baidu.com")
val source2=Source.fromString("Hello World!")
val source3=Source.stdin  //从标准输入读取
5、读取二进制文件
scala并没有提供读取二进制文件的方法,需要使用java类库




6、写入文本文件
import java.io.PrintWriter
val out= new PrintWriter("*.txt")
for(i<-1 to 100) out.println(i)
out.close()
7、访问目录
目前scala没有用来访问某个目录的全部文件,或者递归的遍历所有目录的类。但是有一些替代方法



8、序列化
在java中,我们可以用序列化来将对象传输到其它的虚拟机或者临时存储。
@SerialVersionUID(42L) class person extends Serializable
关于序列化还需注意  内容待定
9、正则表达式
参考:http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html

val numPattern="[0~9]+".r
如果正则表达式还有反斜杠或者引号
val wsnumwsPattern="""\s+[0~9]+\s+""".r

findallin方法返回所有匹配项的迭代器
for(matchString<-numPattern.findAllIn("99 bottles, 98 bottles"))
处理matchstring

要找到字符串里的首个匹配项,得到的结果是Option[String]
val matchs=numPattern.findFirstIn("99 bottles, 98 bottles")



。。。。。。。。。。。。。。。。。。。。。。



10、正则表达式组
在想要提取的子表达式两侧加上圆括号,例如
val numitemPattern="([0~9]+) ([a~z]+)".r
参考:http://developer.51cto.com/art/200909/152225.htm

可以通过 \1调用正则表达式组
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: