我知道如何检查一个字符串是否在另一个字符串中就像这个代码。
when (myString) {
in "FirstString" -> {
// some stuff
}
in "SecondString" -> {
// some stuff
}
else -> {
// some stuff
}
}
in
关键字在后台调用此方法CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false)
问题是:
在这种情况下,有什么方法可以设置ignoreCase = true
吗?
您可以为when
:之前的字符串声明一个特殊的本地运算符函数contains
fun main() {
operator fun String.contains(other: String): Boolean = this.contains(other, ignoreCase = true)
when(myString) {
in "firstString" -> ...
}
}
这样,in
运算符将调用该函数,而不是标准库中声明的函数,因为它位于更近的范围内。
但是,请注意,只有当原始contains
函数是扩展时,此技巧才有效。如果它是成员函数,则不能用扩展重写它。
您可以在此处使用toLowerCase((函数:
when (myString.toLowerCase()) {
in "firststring" -> {
// some stuff
}
in "secondstring" -> {
// some stuff
}
else -> {
// some stuff
}
}
对于when
的情况,如果它们是变量,则需要对它们中的每一个调用toLowerCase()
。但是,如果它们是常量,那么简单地使用小写字符串就可以了——"firststring"
、"secondstring"