Jenkins Groovy字符串比较不识别相等字符串问题求助
Jenkins Groovy字符串比较大小写不匹配问题解决
你的问题核心是字符串大小写不一致:构建参数实际值是Ed UI,但判断条件用的是全大写的ED UI,而equals()方法会严格区分大小写,因此返回false并进入else分支。
以下是几种可行的解决方法:
方法1:使用忽略大小写的比较方法
Groovy的String类提供了equalsIgnoreCase()方法,专门用于不区分大小写的字符串匹配:
def consumer_var = env.consumer println "consumer param is " + consumer_var println "are " + consumer_var + " and 'ED UI' equal? " + consumer_var.equalsIgnoreCase('ED UI') if(consumer_var.equalsIgnoreCase('ED UI')) { println "hey, consumer ${consumer} is ED UI!" } else { println "consumer is ${consumer}" }
执行后会正确匹配Ed UI和ED UI,进入if分支。
方法2:统一转换大小写后再比较
可以将参数值和目标字符串都转换为相同大小写(全大写或全小写),再用equals()比较:
转成全大写:
if(consumer_var.toUpperCase().equals('ED UI')) { println "hey, consumer ${consumer} is ED UI!" } else { println "consumer is ${consumer}" }
转成全小写:
if(consumer_var.toLowerCase().equals('ed ui')) { println "hey, consumer ${consumer} is ED UI!" } else { println "consumer is ${consumer}" }
补充说明
如果需要严格控制输入的大小写,也可以在Jenkins构建参数设置中,将参数类型改为单选框或下拉列表,固定可选值为ED UI,从源头避免用户输入大小写不一致的内容。
原问题代码
def consumer_var = env.consumer println "consumer param is " + consumer_var println "are " + consumer_var + " and 'ED UI' equal? " + consumer_var.equals('ED UI') if(consumer_var.equals('ED UI')) { println "hey, consumer ${consumer} is ED UI!" } else { println "consumer is ${consumer}" }
原执行结果
[Pipeline] echo consumer param is Ed UI [Pipeline] echo are Ed UI and 'ED UI' equal? false [Pipeline] echo consumer is Ed UI
内容的提问来源于stack exchange,提问作者Alexb1999
相关产品推荐
相关产品推荐

