R: Replace matched patterns in a string.

str_replace {stringr} | R Documentation

## Replace matched patterns in a string.

### Description

Vectorised over `string`, `pattern` and `replacement`.

### Usage

    str_replace(string, pattern, replacement)

    str_replace_all(string, pattern, replacement)

### Arguments

`string` | Input vector. Either a character vector, or something coercible to one.
`pattern` | Pattern to look for. The default interpretation is a regular expression, as described in stringi::stringi-search-regex. Control options with `regex()`. Match a fixed string (i.e. by comparing only bytes), using `fixed()`. This is fast, but approximate. Generally, for matching human text, you'll want `coll()` which respects character matching rules for the specified locale.
`replacement` | A character vector of replacements. Should be either length one, or the same length as `string` or `pattern`. References of the form `\1`, `\2`, etc will be replaced with the contents of the respective matched group (created by `()`). To perform multiple replacements in each element of `string`, pass a named vector (`c(pattern1 = replacement1)`) to `str_replace_all`. Alternatively, pass a function to `replacement`: it will be called once for each match and its return value will be used to replace the match. To replace the complete string with `NA`, use `replacement = NA_character_`.

### Value

A character vector.

### See Also

`str_replace_na()` to turn missing values into "NA"; `stri_replace()` for the underlying implementation.

### Examples

    fruits <- c("one apple", "two pears", "three bananas")
    str_replace(fruits, "[aeiou]", "-")
    str_replace_all(fruits, "[aeiou]", "-")
    str_replace_all(fruits, "[aeiou]", toupper)
    str_replace_all(fruits, "b", NA_character_)

    str_replace(fruits, "([aeiou])", "")
    str_replace(fruits, "([aeiou])", "\\1\\1")
    str_replace(fruits, "[aeiou]", c("1", "2", "3"))
    str_replace(fruits, c("a", "e", "i"), "-")

    # If you want to apply multiple patterns and replacements to the same
    # string, pass a named vector to pattern.
    fruits %>%
      str_c(collapse = "---") %>%
      str_replace_all(c("one" = "1", "two" = "2", "three" = "3"))

    # Use a function for more sophisticated replacement. This example
    # replaces colour names with their hex values.
    colours <- str_c("\\b", colors(), "\\b", collapse="|")
    col2hex <- function(col) {
      rgb <- col2rgb(col)
      rgb(rgb["red", ], rgb["green", ], rgb["blue", ], max = 255)
    }

    x <- c(
      "Roses are red, violets are blue",
      "My favourite colour is green"
    )
    str_replace_all(x, colours, col2hex)

[Package stringr version 1.3.1 Index]