需要从字符串中删除第一行,然后在scala中删除前两个单词

时间:2019-05-21 04:11:25

标签: scala

我需要导入文件并将其转换为字符串:

样本输入文件为:

#doc source topic proportion ...
0 src/main/resources/alpha1234 128 0.0651366607249073 26 0.05985658726301475 105 0.047919029870909846 173 0.04677118781397669 

我只需要文件第二行中的一部分字符串。 那是第二行的第三个单词。

预期的输出字符串

128 0.0651366607249073 26 0.05985658726301475 105 0.047919029870909846 173 0.04677118781397669 

直到现在我都尝试过:

val inFile  = Source.fromResource("FileName").getLines.mkString(" ").drop(1)
    val out = new BufferedWriter(new FileWriter("src/main/resources/newResult.txt"))
    out.write(inFile)
    out.close()

但是,它不是删除第一行,而是仅删除第一个字母。

1 个答案:

答案 0 :(得分:4)

问题是您要先致电mkString,然后再致电drop。函数mkStringIterator[String]转换为String,当您调用drop时,它可用于 chars 。让我们反转顺序:

val lines = Source
    .fromResource("FileName")
    .getLines
    .toList // we convert Iterator to List to allow pattern matching 
    .drop(1) match { // we drop 1st line and then  match the rest
      // we match 1st line, split it by space, drop 2 first words and then assemble everything back together
      case x :: xs => x.split(" ").drop(2).mkString(" ") :: xs
    }

val inFile = lines.mkString(" ")