scala - 如何在 Scala 中读取匹配模式的前一行?
问题描述
我有一个包含以下内容的文件:
a b c d
a d
e f
a g h i
使用 Scala,我想首先找到不以“a”开头的行,然后将当前行附加到前一行。最后,我希望我的输出是这样的。
a b c d
a d e f
a g h i
我能够逐行读取文件但无法继续
import scala.io.Source
val filename = "fileopen.scala"
for (line <- Source.fromFile(filename).getLines) {
println(line)
}
任何帮助实现这一目标将不胜感激
解决方案
一个相对容易的搜索和替换,但它确实需要将整个文件读入内存。
val rslt = util.Using(io.Source.fromFile("fileopen.scala")){
_.mkString.replaceAll("\n([^a])", " $1")
}
//rslt: scala.util.Try[String] = Success(a b c d
// a d e f
// a g h i
// )
Scala 2.13 之前的版本:
val file = io.Source.fromFile("fileopen.scala")
val rslt = file.mkString.replaceAll("\n([^a])", " $1")
file.close
推荐阅读
- java - 为什么要以 "" 开头的字符串(例如,String id = "" + method())?
- c++ - 如何在 C++ 程序中编写一个自动生成员工 ID 的函数?
- angular - ERESOLVE 无法解析依赖树?
- xml - 为什么使用 JUnitXmlReporter 在量角器中 XML 报告显示失败计数是双倍的
- go - 如何在 Geziyor 中使用 headless chrome / chromedp?
- android - 尽管 Firebase 已连接到 Android Studio,但该应用无法连接到 Firebase
- html - 使用 transform: rotateZ(180deg) translateY(2px) css 属性如何旋转下拉箭头?
- javascript - 如何根据值突出显示表格行
- ardalis-specification - 在违反 OOP 的核心层中使用 ISpecification
- neo4j - 反对neo4j中的apoc.text.HexValue