diff --git a/doc/_stdlib_gen/stdlib-content.jsonnet b/doc/_stdlib_gen/stdlib-content.jsonnet
index be9423d44..f2f88a6db 100644
--- a/doc/_stdlib_gen/stdlib-content.jsonnet
+++ b/doc/_stdlib_gen/stdlib-content.jsonnet
@@ -371,6 +371,14 @@ local html = import 'html.libsonnet';
Returns true if the the given string is of zero length.
|||,
},
+ {
+ name: 'equalsIgnoreCase',
+ params: ['str1', 'str2'],
+ availableSince: 'upcoming',
+ description: |||
+ Returns true if the the given str1 is equal to str2 by doing case insensitive comparison, false otherwise.
+ |||,
+ },
{
name: 'asciiUpper',
params: ['str'],
diff --git a/stdlib/std.jsonnet b/stdlib/std.jsonnet
index df086f065..d0b31b4a5 100644
--- a/stdlib/std.jsonnet
+++ b/stdlib/std.jsonnet
@@ -1724,6 +1724,8 @@ limitations under the License.
isEmpty(str):: std.length(str) == 0,
contains(arr, elem):: std.any([e == elem for e in arr]),
+
+ equalsIgnoreCase(str1, str2):: std.asciiLower(str1) == std.asciiLower(str2),
removeAt(arr, at):: [
arr[i],
diff --git a/test_suite/stdlib.jsonnet b/test_suite/stdlib.jsonnet
index 92910d870..98157b8ee 100644
--- a/test_suite/stdlib.jsonnet
+++ b/test_suite/stdlib.jsonnet
@@ -1562,6 +1562,9 @@ std.assertEqual(std.isEmpty('non-empty string'), false) &&
std.assertEqual(std.contains([1, 2, 3], 2), true) &&
std.assertEqual(std.contains([1, 2, 3], "foo"), false) &&
+std.assertEqual(std.equalsIgnoreCase('foo', 'FOO'), true) &&
+std.assertEqual(std.equalsIgnoreCase('foo', 'bar'), false) &&
+
std.assertEqual(std.remove([1, 2, 3], 2), [1, 3]) &&
std.assertEqual(std.removeAt([1, 2, 3], 1), [1, 3]) &&