我有一个非常简单的字符串,如下所示:
"Some(1234)"
我想从中提取“1234”。我该怎么做?
val s = "Some(1234)"
//s: java.lang.String = Some(1234)
val Pattern = """Some\((\d+)\)""".r
//Pattern: scala.util.matching.Regex = Some\((\d+)\)
val Pattern(number) = s
//number: String = 1234
切换你的正则表达式,无论你需要什么。 \d+
仅限数字。
scala> val s = "Some(1234)"
s: String = Some(1234)
scala> val nums = "[0-9]".r
nums: scala.util.matching.Regex = [0-9]
scala> nums.findAllIn(s).mkString
res0: String = 1234
启动Scala 2.13
,可以通过String
模拟匹配unapplying a string interpolators:
val s"Some($number)" = "Some(1234)"
// number: String = 1234
另请注意,如果想要从Option[Int]
版本中提取toString
,则可以使用match statement
进行插值提取:
x match { case s"Some($number)" => number.toIntOption case _ => None }
// x = "Some(1234)" => Option[Int] = Some(1234)
// x = "Some(1S3R)" => Option[Int] = None
// x = "None" => Option[Int] = None