栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何以Scala方式解析基于行的文本文件(.mht)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何以Scala方式解析基于行的文本文件(.mht)?

这可能是状态机的一个非常简单的用例。

import collection.mutable.ListBuffercase class Part(contentType:Option[String], encoding:Option[String], location:Option[String], data:ListBuffer[String])var boundary: String = nullval Boundary = """.*boundary="(.*)"""".rvar state = 0val IN_PART = 1val IN_DATA = 2var _contentType:Option[String] = Nonevar _encoding:Option[String] = Nonevar _location:Option[String] = Nonevar _data = new ListBuffer[String]()Source.fromFile("test.mht").getLines.foreach{  case Boundary(b) => boundary = b  case `boundary` =>     _contentType = None    _encoding = None    _location = None    _data = new ListBuffer[String]()        state = IN_PART  case "" => state match {    case IN_PART => state = IN_DATA    case IN_DATA =>         var currentPart = Part(_contentType, _encoding, _location, _data)            case _ =>  }  case line => state match {    case IN_DATA => _data.append(line)     case IN_PART => line.split(":") match {      case Array("Content-Type", t) => _contentType = Some(t)      case Array("Content-Transfer-Encoding", e) => _encoding = Some(e)      case Array("Content-Location", l) => _location = Some(l)      case _ =>    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号