我有
val str = "abc:def"
val pattern = "(.*):.*".r
val prefix = str match {
case pattern(prefix) => prefix
case _ => ""
}
我想避免MatchError,所以如果匹配,我将返回匹配,否则将返回“”。这会编译并提取“prefix =“abc”。但是我收到警告说
可变图案的可疑阴影
IDE建议在模式(`prefix`)前后加上``。
有更好的方法吗? IDE为什么建议该解决方案。
最佳答案
IDE会显示警告,因为您有两个具有相同名称的变量,我建议将内部变量重命名为不同的名称:
val prefix = str match {
case pattern(pref) => pref
case _ => ""
}
在这种情况下,建议不是您想要的,如果要与变量的值进行匹配,则可以使用该建议(IDE认为您想要这样做,因为
prefix
是现有变量的名称)。关于regex - 使用正则表达式提取String的一部分并将其分配给变量scala,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43005483/