match (str) { case "String1" => ??? case "String2" => ??? }
这是区分大小写的匹配.如何编写不区分大小写的匹配?我知道我可以调用每个分支的LowerCase,但是我想要更优雅的解决方案.
解决方法
基本方法:
您可以使用模式守卫和正则表达式
str match { case s if s matches "(?i)String1" => 1 case s if s matches "(?i)String2" => 2 case _ => 0 }
复杂的方法:
字符串插值和正则表达式的含义
implicit class CaseInsensitiveRegex(sc: StringContext) { def ci = ( "(?i)" + sc.parts.mkString ).r } def doStringMatch(str: String) = str match { case ci"String1" => 1 case ci"String2" => 2 case _ => 0 }
REPL中的一些示例用法:
scala> doStringMatch("StRINg1") res5: Int = 1 scala> doStringMatch("sTring2") res8: Int = 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。