简体   繁体   中英

replace element of string 3 - 10 positions after a pattern

Ideally, in base R I need some kind of string manipulation that will let me detect a pattern and change the string 3 positions after the pattern.

    example <- "when string says SOMETHING = #c792ea"

desired output:

when string says SOMETHING = #001628

I have tried gsub but I am not sure how I can get it to replace the characters after a pattern.

If it based on the position of character, then we can use substring assignment

substring(example, 30) <- "#001628"
example
#[1] "when string says SOMETHING = #001628"

Or if we need to find the position of the word that starts with #

library(stringr)
posvec <- c(str_locate(example, "#\\w+"))
substring(example, posvec[1], posvec[2]) <- "#001628"
# // or with 
# str_sub(example, posvec[1], posvec[2]) <- "#001628"

Another option is sub to change the substring after the = and one or more space ( \\s* )

sub("=\\s*.*", "= #001628", example)
#[1] "when string says SOMETHING = #001628"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM