如何检查另一个字符串中是否存在多个字符串?

时间:2015-05-12 01:30:34

标签: r

我有这个字符串:

myStr <- "I am very beautiful btw"
str <- c("very","beauti","bt")

现在我想检查myStr是否包含str中的所有字符串,我该如何在R中执行此操作?例如,上面应该是TRUE。 非常感谢

2 个答案:

答案 0 :(得分:6)

是的,您可以使用grepl(实际上不是grep),但必须为每个子字符串运行一次:

> sapply(str, grepl, myStr)
  very beauti     bt 
  TRUE   TRUE   TRUE 

如果只有一个结果为真,请使用all

> all(sapply(str, grepl, myStr))
[1] TRUE

编辑:

如果要检查多个字符串,请说:

myStrings <- c("I am very beautiful btw", "I am not beautiful btw")

然后运行sapply代码,该代码将为myStrings中的每个字符串返回一行矩阵。在每行上应用all

> apply(sapply(str, grepl, myStrings), 1, all)
[1]  TRUE FALSE

答案 1 :(得分:5)

使用stringr即可:

str_detect(myStr, str)

返回每个子字符串的结果:

#[1] TRUE TRUE TRUE

或者根据@thelatemail建议,如果你想知道所有这些是否属实:

all(str_detect(myStr,str))

给出了:

#[1] TRUE

您还可以找到与myStr匹配的str中每个字符的位置(开头,结尾)

str_locate(myStr, str)

给出了:

#     start end
#[1,]     6   9
#[2,]    11  16
#[3,]    21  22