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

Rego中如何拼接两个字符串?自定义拼接函数返回结果错误如何解决

问题原因

  • Rego 内置函数 concat 的参数顺序使用错误,该函数的标准定义为 concat(分隔符, 待拼接的字符串数组),返回值是将数组内所有字符串元素用指定分隔符拼接后的结果。
  • 你原有代码中的写法 concat(bar, item) 等价于用入参字符串"123"作为分隔符,拼接仅包含"f"一个元素的数组,最终返回结果是"f",和你预期的"123f"不一致,因此hello规则的判定结果为false。

正确实现方案

方案1:修正concat参数用法

调整参数顺序,指定分隔符为空字符串,待拼接数组包含入参和要追加的"f"即可:

concat_f(bar) = output {
    output := concat("", [bar, "f"])
}

无额外逻辑时可以直接简写为单条语句:

concat_f(bar) = concat("", [bar, "f"])

方案2:使用+运算符直接拼接(最简洁)

Rego 原生支持用+运算符直接拼接字符串,写法更直观:

concat_f(bar) = bar + "f"

方案3:使用sprintf格式化拼接

如果后续有更复杂的字符串格式化需求,可以用sprintf函数实现:

concat_f(bar) = sprintf("%s%s", [bar, "f"])

以上任意方案修改后,你原有hello规则的判定结果就会符合预期返回true。

内容的提问来源于stack exchange,提问作者Stack Overflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:39:04