arrays - Groovy 检查包含字符串的数组与文字字符串和连接字符串的工作方式不同

标签 arrays string jenkins groovy

当您检查列表或数组中的文字字符串时,它效果很好。 但是,当您检查列表或数组中的连接字符串时,它会返回错误的结果。

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

我使用这些代码在 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


最佳答案

似乎通过更改此行来修复

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

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

但是 Jenkins 中不允许使用 new String

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

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

关于arrays - Groovy 检查包含字符串的数组与文字字符串和连接字符串的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56829842/

相关文章:

javascript - .each 在 js 中返回值

c# - 如何获得字符串操作?

bash - 如何使用 ssh 直接连接到远程 docker 容器

c++ - 用相同的值填充数组,循环重置值

arrays - 如何在vbscript中实现可变大小的数组

c++ - 阵列性能问题

c++ - 如何打印 unsigned long long 的所有可能的唯一位掩码?

string - testLink 中的 "ghost string"是什么?幽灵字符串可选地在 testLink 中生成许多项目

jenkins - 如何使用 Github Webhook 触发 Jenkins 中的管道

jenkins - Jenkins 上的 JUnit 结果超过 1 个图表