在scala中拆分字符串后如何获取子字符串?

时间:2018-11-22 08:57:04

标签: string scala split

我有一些类似的字符串

    val value1 = """int | 10"""
    val value2 = """double | 0.1"""
    val value3 = """duration | 60s"""

这意味着"int | 10"本身是一个字符串。 我想从这些字符串中获取类似10 , 0.1 , 60s的值。我是scala的新手,所以请让我知道如何实现这一价值。

2 个答案:

答案 0 :(得分:0)

他们有多种方法可以做到这一点。我正在分享一种这样的方法。

val value1 = """int | 10"""
val value2 = """double | 0.1"""
val value3 = """duration | 60s"""

println(value1.split("\\|")(1).trim)
println(value2.split("\\|")(1).trim)
println(value3.split("\\|")(1).trim)

结果

10

0.1

60s

答案 1 :(得分:0)

使用正则表达式匹配可能是最灵活的方法,但不是最有效的方法:

def extract(valueString: String): Option[String]  = {
  val ValueMatch = """.*\|\s*([^\s]+)\s*""".r

  valueString match {
    case ValueMatch(v) => Some(v)
    case _ => None
  }
}

您还可以更新正则表达式以提取类型和值,然后检查值是否符合正确的类型,并返回正确类型的值。