R:使用str_detect时如何忽略大小写?

时间:2017-06-13 19:30:57

标签: r stringr

stringr包提供了良好的字符串函数。

搜索字符串(忽略大小写)

可以使用

stringr::str_detect('TOYOTA subaru',ignore.case('toyota'))

这有效,但会发出警告

  

请使用(fixed | coll | regex)(x,ignore_case = TRUE)而不是ignore.case(x)

重写它的正确方法是什么?

4 个答案:

答案 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)

(请注意,前两个参数(模式和字符串)的顺序在greplstr_detect之间切换。)