首页 > 解决方案 > Groovy 检查数组包含字符串与文字字符串和连接字符串的工作方式不同

问题描述

当您检查列表或数组中的文字字符串时,它运行良好。但是,当您检查列表或数组中的 concat 字符串时,它会返回不正确的结果。

并且当直接比较文字字符串和连续字符串时,它们被认为是相同的。

我使用这些代码在 Jenkins 管道上失败了,我直接在 Groovy 1.8.9 上进行了尝试,结果是一样的。

在这段代码中,issue_file = "issue-${signal_dc_key}.json", 然后contains返回false

def issued_list = ["names":["issue-something-DC-VV.json","issue-else-DC-VV.json"]]

            def signal_dc_key = "something-DC-VV"
            def issue_file = "issue-${signal_dc_key}.json"
            println issue_file                                         // issue-something-DC-VV.json
            println issue_file == "issue-something-DC-VV.json"                  // true
            println issue_file == "issue-${signal_dc_key}.json"                 // true
            println issued_list["names"].contains("${issue_file}")              // false
            println issued_list["names"].contains(issue_file)                   // false
            println issued_list["names"].contains("issue-something-DC-VV.json")   // true

在此代码中,issue_file = "issue-something-DC-VV.json",contains返回true

def issued_list = ["names":["issue-something-DC-VV.json","issue-else-DC-VV.json"]]
            def signal_dc_key = "something-DC-VV"
            def issue_file = "issue-something-DC-VV.json"
            println issue_file                                         // issue-something-DC-VV.json
            println issue_file == "issue-something-DC-VV.json"                 // true
            println issue_file == "issue-${signal_dc_key}.json"                  // true
            println issued_list["names"].contains("${issue_file}")              // false
            println issued_list["names"].contains(issue_file)                   // true
            println issued_list["names"].contains("issue-something-DC-VV.json")   // true


标签: arraysstringjenkinsgroovy

解决方案


似乎通过更改此行已修复

def issue_file = "issue-${signal_dc_key}.json"

def issue_file = new String("issue-${signal_dc_key}.json" )

new String在 Jenkins 中是不允许的。

感谢 Michael Rutherfurd 的评论,toString()在 Jenkins 中工作并被允许。

def issue_file = "issue-${signal_dc_key}.json".toString()

推荐阅读