zoukankan      html  css  js  c++  java
  • 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&&[^u005cu0022]]*)"");
    
      Matcher m = p.matcher(str);
    
      while(m.find()){
    
        String s = m.group();
        System.out.println(s);
    }

      

  • 相关阅读:
    CF538H Summer Dichotomy
    CF1558F Strange Sort
    CF429E Points and Segments
    CF986F Oppa Funcan Style Remastered
    [JOI Open 2016] 摩天大楼
    [做题笔记] 浅谈笛卡尔树结构的应用
    CF1383C String Transformation 2
    CF1558E Down Below
    weex打包安卓艰苦之路
    IntelliJ IDEA 推荐15款插件
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9665155.html
Copyright © 2011-2022 走看看