在 Kotlin 中将“Yes”或“No”字符串转换为布尔值

Nic*_*zzi 1 kotlin

我想知道是否有更有效的方法在 kotlin 中将字符串转换"yes/no"为布尔值。我的解决方案是在 String 类上定义一个扩展函数,并在 when 表达式中执行 yes no che:

fun String.toBoolean(): Boolean {
    when (this.toUpperCase()) {
        "YES" -> return true
        "NO" -> return false
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)

还有其他可能的方法吗?

Tod*_*odd 6

如果默认情况是false这样可以简化:

fun String.toBoolean() = equals("YES", ignoreCase = true)
Run Code Online (Sandbox Code Playgroud)

为了简化这一点,我们依赖于这样一个事实:任何不是“是”的东西都将是错误的。我们还告诉equals我们希望它进行不区分大小写的检查(这是第二个参数)。

  • 我发现这是一种指定参数名称很有帮助的情况:`equals("yes",ignoreCase = true)`。(是的,这里不需要“this”。事实上,我认为您唯一需要它的时候是为了消除同名的参数或本地变量的歧义。) (2认同)