You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在switch-case语句中设置空与非空字符串的分支?

如何在Groovy的switch-case中判断字符串空或非空

你当前的代码写法存在问题:switch(str)会拿字符串str和每个case后的值做匹配,但你写的case str == ''是一个布尔值(true/false),字符串和布尔值类型不匹配,所以这些分支永远不会触发。

下面是两种正确的实现方式:

方式一:将switch表达式设为true,直接匹配条件

这种方式把switch的判断对象设为true,每个case对应布尔条件,符合常规条件判断逻辑:

String str = 'value'
switch(true) {
    case str.isEmpty(): // 用isEmpty()判断空字符串更规范
        println('Entered an empty value')
        break
    case str == 'CoDe': // 特殊值分支要放在非空判断前面
        println('Entered special code ' + str)
        break
    case str != '':
        println('Entered value ' + str)
        break
    default:
        println('Incorrect entry')
        break
}

方式二:利用Groovy的闭包匹配特性

Groovy的switch支持闭包作为case分支,闭包接收switch的表达式作为参数(这里就是str),返回布尔值判断是否匹配:

String str = 'value'
switch(str) {
    case '': // 直接匹配空字符串字面量
        println('Entered an empty value')
        break
    case 'CoDe': // 特殊值分支优先
        println('Entered special code ' + str)
        break
    case { !it.isEmpty() }: // 闭包判断非空
        println('Entered value ' + str)
        break
    default:
        println('Incorrect entry')
        break
}

关键注意点

  • 特殊值分支(比如'CoDe')必须放在非空判断分支的前面,否则非空分支会先匹配到'CoDe',导致特殊分支无法触发。
  • 判断空字符串推荐用isEmpty()方法,比直接和''比较更符合Java/Groovy的规范。

内容的提问来源于stack exchange,提问作者Cristian Inda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:14:37