strings.coalesce
strings.coalesce(a, b, c, ...)
说明
此函数可接受无限数量的实参,并返回第一个不计算为空字符串(例如“非零值”)的表达式的值。如果所有实参的计算结果均为空字符串,则函数调用会返回一个空字符串。
参数可以是字面量、事件字段或函数调用。所有实参都必须是 STRING 类型。如果任何实参是事件字段,则这些属性必须来自同一事件。
形参数据类型
STRING
返回值类型
STRING
代码示例
示例 1
以下示例包含字符串变量作为实参。当 (1) $e.network.email.from 为 suspicious@gmail.com 或 (2) $e.network.email.from 为空且 $e.network.email.to 为 suspicious@gmail.com 时,该条件的计算结果为 true。
"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
示例 2
以下示例使用两个以上的实参调用 coalesce 函数。此条件会将事件 $e 中的第一个非 null IP 地址与参考列表 ip_watchlist 中的值进行比较。此调用中实参的合并顺序与它们在规则条件中的枚举顺序相同:
- 系统会先评估
$e.principal.ip。 - 接下来,系统会评估
$e.src.ip。 - 接下来,系统会评估
$e.target.ip。 - 最后,如果之前的
ip字段未设置,则返回字符串“No IP”作为默认值。
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
示例 3
以下示例尝试合并事件 $e1 和事件 $e2 中的 principal.hostname。该示例会返回编译器错误,因为参数是不同的事件变量。
// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)