English · PDF 246
a1 == a2 #> [1] FALSE
它们的渲染结果相同,但由于定义方式不同,fixed() 找不到匹配。相反,你可以使用接下来定义的 coll(),它遵循人类的字符比较规则:
str_detect(a1, fixed(a2)) #> [1] FALSE str_detect(a1, coll(a2)) #> [1] TRUE
# 这意味着在进行不区分大小写的匹配时,# 你还需要注意这种差异:
i <- c("I", "İ", "i", "ı")
i
#> [1] "I" "İ" "i" "ı"
str_subset(i, coll("i", ignore_case = TRUE))
#> [1] "I" "i"
str_subset(
i,
coll("i", ignore_case = TRUE, locale = "tr")
)
#> [1] "İ" "i"
fixed() 和 regex() 都有 ignore_case 参数,但它们不允许你选择区域设置(locale):它们总是使用默认的区域设置。你可以用下面的代码查看它是什么(稍后会详细介绍 stringi):
stringi::stri_locale_info()
#> $Language
#> [1] "en"
#>
#> $Country
#> [1] "US"
#>
#> $Variant
#> [1] ""
#>
#> $Name
#> [1] "en_US"