微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 字符串不区分大小写的模式匹配

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 举报,一经查实,本站将立刻删除。

相关推荐