str_replace: Replace matched patterns in a string

View source: R/replace.R

str_replaceR 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

character vector of strings.

pattern

string or character vector, pattern(s) to match. Can be:

  • A Perl-compatible regular expression (default).

  • Wrap with perl(ignore_case = TRUE) to use case-insensitive matching.

  • Wrap with fixed() to use a fixed/literal match.

  • Wrap with regex() to use a POSIX 1003.2 extended regular expression.

  • Wrap with regex(ignore_case = TRUE) to use case-insensitive matching with a POSIX 1003.2 extended regular expression.

  • A named character vector (see description in argument below)

  • To perform multiple replacements in each element of string, use a named character vector in the format: c("pattern1" = "replacement1")

replacement

string or character vector of replacements.

  • Should be either of length one or the same length as string or pattern.

  • Can also be a function (or formula) which will be called once for each match (from right to left) and its return value will be used to replace the match. Due to limitation with base R, a warning is produced if the return value is longer than the match.

  • 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, leave use a named character vector for pattern in the format: c("pattern1" = "replacement1").

  • To replace the complete string with NA, use replacement = NA_character_.

Value

Returns a character vector.

See Also

str_replace_na() to turn missing values into NA.

Examples

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

str_replace(fruits, "([aeiou])", "")
str_replace(fruits, "([aeiou])", "\\1\\1")

# Note that str_replace() is vectorised along text, pattern, and replacement
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.
fruits2 <- "one apple---two pears---three bananas"
str_replace_all(fruits2, c("one" = "1", "two" = "2", "three" = "3"))

# Use a function for more sophisticated replacement. This example converts
# all vowels into upper case.
str_replace_all(fruits, "[aeiou]", toupper)

# If the function used for replacement outputs a longer string than the match
# it will replace, a warning is produced. This example tries to replace
# colour names with their hex values, which works with stringr but not with
# this package unfortunately.
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"
)
## Not run: str_replace_all(x, colours, col2hex) # produces warnings

csdaw/stringrb documentation built on Aug. 13, 2022, 10:55 p.m.