scala - 如何从scala中的字符串变量中提取特定文本

标签 scala

我是 Spark scala 世界的新手,正在尝试学习它。我有一个包含以下值的变量。

val result = "Scan value: 1802 seconds
Start time: Thu, Jan 31 2019, 15:09:09 GMT
End time: Thu, Jan 31 2019, 15:39:11 GMT"

我想读取扫描值(1802秒)以及开始时间和结束时间到不同的变量。

我正在尝试使用子字符串,但我没有正确获得结果,并且位置可能与用户输入的方式非常不同。

例如:要读取扫描值,我正在执行以下操作。但有时这些位置可能会根据用户进入系统的方式而改变。

val scan_value = result.sbstring(13,4)

有人可以帮助我如何将这些值读入 scala 中的单独变量吗?

谢谢, 巴布

最佳答案

假设输入始终采用指定的格式,以下代码将帮助您将开始时间和结束时间提取到各自的变量中

val result = """ Scan value: 1802 seconds
Start time: Thu, Jan 31 2019, 15:09:09 GMT
  End time: Thu, Jan 31 2019, 15:39:11 GMT"""

val mayBeScanTime = result.split("Scan value:").find(_.contains("seconds")).map(_.split("seconds")(0).trim)


val startTime = Option(result.split("Start time:")(1).split("End time:")(0).trim)


val endTime = Option(result.split("End time:")(1).trim)

这会给你一个输出

mayBeScanTime: Option[String] = Some(1802)


startTime: Option[String] = Some(Thu, Jan 31 2019, 15:09:09 GMT)


endTime: Option[String] = Some(Thu, Jan 31 2019, 15:39:11 GMT)

请注意,如果输入字符串发生更改,以下代码将不会产生正确的结果。

关于scala - 如何从scala中的字符串变量中提取特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032698/

相关文章:

scala - Akka 流 : At-Least-Once-Delivery behaviour with Kafka and Cassandra

scala - 我可以在 Scala 中创建空的元组或字符串吗?

Scala 编译器错误 : "identifier expected but integer literal found". 为什么?

Scala:错误警告 "match may not be exhaustive"

scala - 从 `sbt compile` 排除测试依赖解析

java - 我可以在 Scala 中开发 Lego Mindstorms 吗?

scala - 基于scala中变量类型的条件

scala - 有没有办法通过 sbt 插件获取项目的所有依赖项?

scala - SBT项目java.io.FileNotFoundException:FileNotFoundException:HADOOP_HOME未设置

Scala 不可变 SortedSet 在删除时不是 "stable"