Check if a value contains another value. Supports both strings and arrays.
Returns true
if a match is found, otherwise false
.
The first parameter is the "needle" to find in the "haystack". It will read from the context if there is a matching variable, otherwise it will use the parameter as the value.
Strings
Case-insensitive by default but can be made sensitive by setting the second parameter to true
.
summary: "It was the best of times, it was the worst of times."adjective: bestnoun: carrot
{{ if summary | contains('BEST') }}{{ if summary | contains('BEST', true) }}{{ if summary | contains('adjective') }}{{ if summary | contains('noun') }}
true (the substring "BEST" was in the string, and it didn't care about the case.)false (the substring "BEST" was in the string, however it didn't match the case.)true (there's a field named "adjective", and it got the value which was "best")false (there's a field named "noun", and it got the value which was "carrot")
Arrays
You can set strict type checking by setting the second parameter to true
.
foods: - bacon - bread - tomatodelicious: bacongross: broccoli numbers: [1, 2]number: '1'
{{ if foods | contains('bacon') }}{{ if foods | contains('delicious') }}{{ if foods | contains('gross') }}{{ if (foods | contains('vegan bacon strips')) }} {{ if numbers | contains(number) }}{{ if numbers | contains(number, true) }}
true (there's no field named "bacon", so it searched for literally "bacon")true (there's a field named "delicious", and it got the value which was "bacon")false (there's a field named "gross", and it got the value which was "broccoli")true (there's no field named "vegan bacon strips", so it searched the expression for a literal string "vegan bacon strips") true (the value of "number" is the string "1", which is fine in non-strict mode)false (with strict mode enabled, the string "1" won't match the integer)