arrays - 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
解决方案
似乎通过更改此行已修复
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()
推荐阅读
- jquery - 如何通过 AJAX 将数据发送到另一个控制器?
- httpclient - 如何在 ebay 上调用 create inventory api 时设置 Content-Language?
- sql - SELECT 查询毫秒访问
- sql - SSRS 从总和列中的列表中减去一个负数
- supercollider - 在supercollider中,“*”、“#”、“_”的作用是什么?
- sql - Postgres 索引创建 - 索引字段名称上的单引号
- python - 使用 S3 和 Lambda 函数接收 PAWS SES 电子邮件转发到外部电子邮件 (Gmail)
- javascript - 如何使用 ReactJS 轻松地将 JSON 转换和下载为 CSV?
- java - Java LocalDateTime:为什么不支持的字段:OffsetSeconds 产生?
- python - VS Code Jupyter 显示不正确