stringr包提供了良好的字符串函数。
搜索字符串(忽略大小写)
可以使用
stringr::str_detect('TOYOTA subaru',ignore.case('toyota'))
这有效,但会发出警告
请使用(fixed | coll | regex)(x,ignore_case = TRUE)而不是ignore.case(x)
重写它的正确方法是什么?
答案 0 :(得分:11)
您可以使用regex
(或fix
作为@ lmo的注释,具体取决于您的需要)函数来制作?modifiers或?str_detect中详细说明的模式(请参阅模式参数的指令):
library(stringr)
str_detect('TOYOTA subaru', regex('toyota', ignore_case = T))
# [1] TRUE
答案 1 :(得分:8)
搜索字符串必须位于函数fixed
内,并且该函数具有有效参数ignore_case
str_detect('TOYOTA subaru', fixed('toyota', ignore_case=TRUE))
答案 2 :(得分:4)
您可以使用(?i)
保存一些键入内容:
c("Toyota", "my TOYOTA", "your Subaru") %>%
str_detect( "(?i)toyota" )
# [1] TRUE TRUE FALSE
答案 3 :(得分:1)
您可以使用基本的R函数grepl()
来完成相同的事情,而无需嵌套函数。它只接受ignore.case
作为参数。
grepl("toyota", 'TOYOTA subaru', ignore.case = TRUE)
(请注意,前两个参数(模式和字符串)的顺序在grepl
和str_detect
之间切换。)