R: Check if string contains pattern

str_contains {sjmisc} | R Documentation

## Check if string contains pattern

### Description

This functions checks whether a string or character vector `x` contains the string `pattern`. By default, this function is case sensitive.

### Usage

    str_contains(x, pattern, ignore.case = FALSE, logic = NULL,
      switch = FALSE)

### Arguments

`x` | Character string where matches are sought. May also be a character vector of length > 1 (see 'Examples').
`pattern` | Character string to be matched in `x`. May also be a character vector of length > 1 (see 'Examples').
`ignore.case` | Logical, whether matching should be case sensitive or not.
`logic` | Indicates whether a logical combination of multiple search pattern should be made. Use `"or"`, `"OR"` or `"|"` for a logical or-combination, i.e. at least one element of `pattern` is in `x`. Use `"and"`, `"AND"` or `"&"` for a logical AND-combination, i.e. all elements of `pattern` are in `x`. Use `"not"`, `"NOT"` or `"!"` for a logical NOT-combination, i.e. no element of `pattern` is in `x`. By default, `logic = NULL`, which means that `TRUE` or `FALSE` is returned for each element of `pattern` separately.
`switch` | Logical, if `TRUE`, `x` will be sought in each element of `pattern`. If `switch = TRUE`, `x` needs to be of length 1.

### Details

This function iterates all elements in `pattern` and looks for each of these elements if it is found in any element of `x`, i.e. which elements of `pattern` are found in the vector `x`.
Technically, it iterates `pattern` and calls `grep(x, pattern[i], fixed = TRUE)` for each element of `pattern`. If `switch = TRUE`, it iterates `pattern` and calls `grep(pattern[i], x, fixed = TRUE)` for each element of `pattern`. Hence, in the latter case (if `switch = TRUE`), `x` must be of length 1.

### Value

`TRUE` if `x` contains `pattern`.

### Examples

    str_contains("hello", "hel")
    str_contains("hello", "hal")

    str_contains("hello", "Hel")
    str_contains("hello", "Hel", ignore.case = TRUE)

    # which patterns are in "abc"?
    str_contains("abc", c("a", "b", "e"))

    # is pattern in any element of 'x'?
    str_contains(c("def", "abc", "xyz"), "abc")
    # is "abcde" in any element of 'x'?
    str_contains(c("def", "abc", "xyz"), "abcde") # no...
    # is "abc" in any of pattern?
    str_contains("abc", c("defg", "abcde", "xyz12"), switch = TRUE)

    str_contains(c("def", "abcde", "xyz"), c("abc", "123"))

    # any pattern in "abc"?
    str_contains("abc", c("a", "b", "e"), logic = "or")

    # all patterns in "abc"?
    str_contains("abc", c("a", "b", "e"), logic = "and")
    str_contains("abc", c("a", "b"), logic = "and")

    # no patterns in "abc"?
    str_contains("abc", c("a", "b", "e"), logic = "not")
    str_contains("abc", c("d", "e", "f"), logic = "not")

[Package sjmisc version 2.7.5 Index]