如何在scala中按分隔符拆分字符串?

时间:2015-12-21 12:06:25

标签: regex string scala selenium

我有一个这样的字符串:

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

3 个答案:

答案 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