Skip to content

This uses Unicode canonicalisation rules, and optionally ignores case.


str_equal(x, y, locale = "en", ignore_case = FALSE, ...)


x, y

A pair of character vectors.


Locale to use for comparisons. See stringi::stri_locale_list() for all possible options. Defaults to "en" (English) to ensure that default behaviour is consistent across platforms.


Ignore case when comparing strings?


Other options used to control collation. Passed on to stringi::stri_opts_collator().


An logical vector the same length as x/y.

See also

stringi::stri_cmp_equiv() for the underlying implementation.


# These two strings encode "a" with an accent in two different ways
a1 <- "\u00e1"
a2 <- "a\u0301"
c(a1, a2)
#> [1] "á" "á"

a1 == a2
#> [1] FALSE
str_equal(a1, a2)
#> [1] TRUE

# ohm and omega use different code points but should always be treated
# as equal
ohm <- "\u2126"
omega <- "\u03A9"
c(ohm, omega)
#> [1] "Ω" "Ω"

ohm == omega
#> [1] FALSE
str_equal(ohm, omega)
#> [1] TRUE