我是 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/