scala习题九——文件和正则表达式
2015-12-22 23:33
288 查看
1.写出一个小scala程序,将某个文件中的行倒转顺序(将最后一行作为第一行,依次类推),记住要import scala.io.source
2.编写scala程序,从一个带有制表符的文件读取内容,将每个制表符替换成一个空格,使得制表符隔开的n列仍然保持纵向对齐,并将结果写入同一个文件
编写一小段Scala代码,从一个文件读取内容并把所有字符数大于12的单词打印到控制台。如果你能用单行代码完成会有额外奖励
4.编写scala程序,从包含浮点数的文本文件读取内容,打印出文件中所有浮点数之和,平均值,最大值和最小值
编写Scala程序,向文件中写入2的n次方及其倒数,指数n从0到20。对齐各列
6.编写正则表达式,匹配Java或C++程序代码中类似”like this,maybe with \” or\”这样的带引号的字符串。编写Scala程序将某个源文件中所有类似的字符串打印出来
7.编写Scala程序,从文本文件读取内容,并打印出所有的非浮点数的词法单位。要求使用正则表达式
8.编写Scala程序打印出某个网页中所有img标签的src属性。使用正则表达式和分组
scala的正则表达式分组形式是val numpattern =”([0-9]+) ([a-z]+)”.r
9.编写Scala程序,盘点给定目录及其子目录中总共有多少以.class为扩展名的文件
10.扩展那个可序列化的Person类,让它能以一个集合保存某个人的朋友信息。构造出一些Person对象,让他们中的一些人成为朋友,然后将Array[Person]保存到文件。将这个数组从文件中重新读出来,校验朋友关系是否完好
val source=Source.fromFile("D:\\text.txt","UTF-8"); var lineitrator=source.getLines().toArray; for(i<-(0 until lineitrator.length).reverse ){ println(lineitrator(i)); }
2.编写scala程序,从一个带有制表符的文件读取内容,将每个制表符替换成一个空格,使得制表符隔开的n列仍然保持纵向对齐,并将结果写入同一个文件
def readzhibiao():Unit={ val source=Source.fromFile("D:\\text.txt","UTF-8"); var lineitrator=source.getLines(); val str=for(i<- lineitrator) yield{ i.replaceAll("\\t", " "); } val pw=new PrintWriter("D:\\text.txt"); str.foreach { line => pw.println(line) } pw.close(); }
编写一小段Scala代码,从一个文件读取内容并把所有字符数大于12的单词打印到控制台。如果你能用单行代码完成会有额外奖励
Source.fromFile("D:\\text.txt","UTF-8").mkString.split("\\s+").foreach {word => if(word.length()>12) println(word); };
4.编写scala程序,从包含浮点数的文本文件读取内容,打印出文件中所有浮点数之和,平均值,最大值和最小值
def readfilefloat():Unit={ var sum=0.0; val source=Source.fromFile("D:\\text.txt","UTF-8").mkString.split("\\s+").foreach {word => if(word.matches("\\d+\\.?\\d*")) sum=sum+word.toDouble }; println(sum); }
编写Scala程序,向文件中写入2的n次方及其倒数,指数n从0到20。对齐各列
def write2(n:Int):Unit={ var exp=BigInt(2); val out=new PrintWriter("D:\\text.txt"); for(i<- (1 to n)){ out.println(i+" "+1/(exp.pow(i))); } out.close(); }
6.编写正则表达式,匹配Java或C++程序代码中类似”like this,maybe with \” or\”这样的带引号的字符串。编写Scala程序将某个源文件中所有类似的字符串打印出来
def readregx():Unit={ val Regx=""; val in=Source.fromFile("D:\\text.txt").mkString; val pattern = "\\w+\\s+\"".r pattern.findAllIn(in).foreach(println) }
7.编写Scala程序,从文本文件读取内容,并打印出所有的非浮点数的词法单位。要求使用正则表达式
def printfloat():Unit={ val pattern="\\d+\\.?\\d*".r; val source=Source.fromFile("D:\\text.txt").mkString pattern.findAllIn(source).foreach { println } }
8.编写Scala程序打印出某个网页中所有img标签的src属性。使用正则表达式和分组
scala的正则表达式分组形式是val numpattern =”([0-9]+) ([a-z]+)”.r
def printimg():Unit={ val source = Source.fromFile("D:\\text.txt").mkString; val pattern = """<img[^>]+(src\s*=\s*"[^>^"]+")[^>]*>""".r for (pattern(str) <- pattern.findAllIn(source)) println(str) }
9.编写Scala程序,盘点给定目录及其子目录中总共有多少以.class为扩展名的文件
def readdir(dir:File):Iterator[File]={ //获取本目录下所有含有class的文件,并加入迭代器 val chlidren =dir.listFiles().filter(_.getName().endsWith("class")); //像children中加入子目录下所有带有class的文件 chlidren.toIterator ++ dir.listFiles().filter(_.isDirectory()).flatMap { readdir _ } } var s= readdir(new File("C:\\Users\\pengchen\\workspace\\hello")); println(s.length);
10.扩展那个可序列化的Person类,让它能以一个集合保存某个人的朋友信息。构造出一些Person对象,让他们中的一些人成为朋友,然后将Array[Person]保存到文件。将这个数组从文件中重新读出来,校验朋友关系是否完好
@SerialVersionUID(42L) class person(val name:String) extends Serializable{ private val friends=new ArrayBuffer[person](); def addFriend(friend:person){ friends+=friend; } override def toString() = { var str = "My name is " + name + " and my friends name is " friends.foreach(str += _.name + ",") str } def savefriends(friend:person){ val out=new ObjectOutputStream(new FileOutputStream("D:\\test.obj")); out.writeObject(friend); out.close(); } def readfriends(){ val in = new ObjectInputStream(new FileInputStream("D:\\test.obj")); val readfriends=in.readObject().asInstanceOf[person]; in.close(); println(readfriends); } override def main(args:Array[String]){ // var s= readdir(new File("C:\\Users\\pengchen\\workspace\\hello")); // println(s.length); // printimg(); val a=new person("a"); val b=new person("b"); val c=new person("c"); val d=new person("d"); a.addFriend(b); a.addFriend(c); a.addFriend(d); println(a); savefriends(a); println(a); readfriends(); }
相关文章推荐
- 实战c++中的vector系列--vector应用之STL的find、find_if、find_end、find_first_of、find_if_not(C++11)
- 解决jQuery循环调用ajax,异步返回结果混乱
- 实战c++中的vector系列--vector应用之STL的find、find_if、find_end、find_first_of、find_if_not(C++11)
- 【转】Oracle - 数据库的实例、表空间、用户、表之间关系
- 14.未公开的Oracle数据库秘密笔记——10079事件和网络数据包
- 047 exam c 20-end
- (九十六)函数和结构
- (九十五)函数与C-风格字符串
- 基于GTID搭建主从
- bzoj2132 圈地计划
- HTTP协议详解(真的很经典)
- 20151222--Ajax三级无刷新
- python3打包成exe
- android之旅4: XML方式读写数据与文件创建
- 鸡排七
- 13.未公开的Oracle数据库秘密笔记——10053事件和基于成本的优化器
- AndroidStudio常见问题
- 多态与虚函数编程题 #3(C++程序设计第6周)
- 自定义图文控件ImageTextView
- 给班里同学布置的一道题目……虽然做的人并不算多。