在字符串的 when 表达式中设置忽略大小写值
set ignore case value in when expression on strings
我知道如何检查一个字符串是否在另一个字符串中
喜欢这段代码。
when (myString) {
in "FirstString" -> {
// some stuff
}
in "SecondString" -> {
// some stuff
}
else -> {
// some stuff
}
}
in
关键字在后台调用此方法 CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false)
问题是这样的:
在这种情况下我可以设置 ignoreCase = true
吗?
你可以在这里使用toLowerCase()函数:
when (myString.toLowerCase()) {
in "firststring" -> {
// some stuff
}
in "secondstring" -> {
// some stuff
}
else -> {
// some stuff
}
}
对于 when
的情况,如果它们是 变量 toLowerCase()
需要对它们中的每一个调用。但是,如果它们是 常量 ,简单地使用小写字符串就可以了 - "firststring"
、"secondstring"
您可以为 when
之前的字符串声明一个临时本地运算符函数 contains
:
fun main() {
operator fun String.contains(other: String): Boolean = this.contains(other, ignoreCase = true)
when(myString) {
in "firstString" -> ...
}
}
这样,将为 in
运算符而不是标准库中声明的运算符调用该函数,因为它位于更近的范围内。
但是请注意,此技巧仅在原始 contains
函数是扩展时才有效。如果它是一个成员函数,它不能被扩展覆盖。
我知道如何检查一个字符串是否在另一个字符串中 喜欢这段代码。
when (myString) {
in "FirstString" -> {
// some stuff
}
in "SecondString" -> {
// some stuff
}
else -> {
// some stuff
}
}
in
关键字在后台调用此方法 CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false)
问题是这样的:
在这种情况下我可以设置 ignoreCase = true
吗?
你可以在这里使用toLowerCase()函数:
when (myString.toLowerCase()) {
in "firststring" -> {
// some stuff
}
in "secondstring" -> {
// some stuff
}
else -> {
// some stuff
}
}
对于 when
的情况,如果它们是 变量 toLowerCase()
需要对它们中的每一个调用。但是,如果它们是 常量 ,简单地使用小写字符串就可以了 - "firststring"
、"secondstring"
您可以为 when
之前的字符串声明一个临时本地运算符函数 contains
:
fun main() {
operator fun String.contains(other: String): Boolean = this.contains(other, ignoreCase = true)
when(myString) {
in "firstString" -> ...
}
}
这样,将为 in
运算符而不是标准库中声明的运算符调用该函数,因为它位于更近的范围内。
但是请注意,此技巧仅在原始 contains
函数是扩展时才有效。如果它是一个成员函数,它不能被扩展覆盖。