我有一个这样的字符串:
val str = "3.2.1"
我想基于它做一些操作。
我也会分享我想做的事情,如果你能分享你的建议会很好:
我正在为一些网站做自动化,基于这个字符串,我需要做一些动作。
所以:
第一个数字 - 我需要按值选择:value =“str [0]”
第二个数字 - 我需要按值选择:value =“str [0] +”。“+ str [1]”
第三个数字 - 我需要按值选择:value =“str [0] +”。“+ str [1] +”。“+ str [2]”
你可以看到我需要选择的第二个字段是名字firstdigit.seconddigit,第三个字段是firstdigit.seconddigit.thirddigit
答案 0 :(得分:2)
您可以使用模式匹配。 首先创建正则表达式:
@ val pattern = """(\d+)\.(\d+)\.(\d+)""".r
pattern: util.matching.Regex = (\d+)\.(\d+)\.(\d+)
然后你可以用它来模式匹配:
@ "3.4.342" match { case pattern(a, b, c) => println(a, b, c) }
(3,4,342)
如果您不需要所有数字,例如可以执行此操作
"1.2.0" match { case pattern(a, _, _) => println(a) }
1
如果您想例如只使用前两个数字
@ val twoNumbers = "1.2.0" match { case pattern(a, b, _) => s"$a.$b" }
twoNumbers: String = "1.2"
答案 1 :(得分:0)
尝试以下方法:
scala> "3.2.1".split(".")
res0: Array[java.lang.String] = Array(string1, string2, string3)
答案 2 :(得分:0)
只能将值加法添加到@Lukasz的答案中:
@ val pattern = """(\d+)\.(\d+)\.(\d+)""".r
pattern: scala.util.matching.Regex = (\d+)\.(\d+)\.(\d+)
@ val pattern(firstdigit, seconddigit, thirddigit) = "3.2.1"
firstdigit: String = "3"
seconddigit: String = "2"
thirddigit: String = "1"
通过这种方式,所有值都可以在代码中进一步被视为常规val
。