Scala 如何基于字符对字符串进行模式匹配?
在我的代码中,字符串应具有以下结构Scala 如何基于字符对字符串进行模式匹配?,scala,Scala,在我的代码中,字符串应具有以下结构part1-part2-part3。不同部分由-分隔,只能有3个部分 到目前为止,我使用了String的split方法,可以检查返回的数组的长度来验证结构: val tagDetails: Array[String] = tag.split('-') //syntax of received tag is part1-part2-part3 if (tagDetails.length == 3) { val course: String = tagDeta
part1-part2-part3
。不同部分由-
分隔,只能有3个部分
到目前为止,我使用了String
的split
方法,可以检查返回的数组的长度来验证结构:
val tagDetails: Array[String] = tag.split('-') //syntax of received tag is part1-part2-part3
if (tagDetails.length == 3) {
val course: String = tagDetails(0)
val subject: String = tagDetails(1)
val topic: String = tagDetails(2)
println("splitted tag " + course + ", " + subject + ", " + topic)
} else {..}
如何使用match
执行相同操作?您可以使用match
来分解拆分值的数组
val tag = "course-subject-topic"
tag.split('-') match {
case Array(course, subject, topic) =>
println("splitted tag " + course + ", " + subject + ", " + topic)
case _ => println("Oops")
}
模式匹配也可以具有if
保护,如下所示
tag.split('-') match {
case Array(course, subject, topic) if course != subject =>
println("splitted tag " + course + ", " + subject + ", " + topic)
case _ => println("Oops")
}
参考-从Scala 2.13
开始,可以通过以下方式对字符串进行模式匹配:
"part1-part2-part3" match {
case s"$course-$subject-$topic" =>
println(s"Split tag $course, $subject, $topic")
case _ =>
println("Oops")
}
// Splitted tag part1, part2, part3