替换字符串/文本中单词的“从第n个到最后一个”出现

meier_flo

之前曾问过这个问题,但尚未满足要求者的要求。

给定以下字符串:

mystring <- "one fish two fish red fish blue fish"

以下功能允许替换单词中第n个出现的单词:

replacerFn <- function(String, word, rword, n){
 stopifnot(n >0)
  pat <- sprintf(paste0("^((.*?\\b", word, "\\b.*?){%d})\\b",
           word,"\\b"), n-1)
  rpat <- paste0("\\1", rword)
  if(n >1) { 
    stringr::str_replace(String, pat, rpat)
   } else {
    stringr::str_replace(String, word, rword)
    }
 }


 replacerFn(mystring, "fish", "dog", 1)
 #[1] "one dog two fish red fish blue fish"
 replacerFn(mystring, "fish", "dog", 2)
 #[1] "one fish two dog red fish blue fish"
 replacerFn(mystring, "fish", "dog", 3)
 #[1] "one fish two fish red dog blue fish"
 replacerFn(mystring, "fish", "dog", 4)
 #[1] "one fish two fish red fish blue dog"

我们如何调整此功能以替换单词的第n个到最后一个出现?

倒数第二:

"one fish two dog red dog blue dog"

倒数第三:

"one fish two fish red dog blue dog"

等等 ...?

我尝试了诸如str_replace_all之类的操作或调整了正则表达式的部分{1,},但均未成功。

谢谢你的帮助!

阿克伦

这是一个更简单的选择 gsubfn

library(gsubfn)
replacerFn2 <- function(String, word, rword, n) {

  p <- proto(fun = function(this, x) if (count >= n) rword else x) 
   gsubfn(word, p, String)
 }

replacerFn2(mystring, "fish", "dog", 2)
#[1] "one fish two dog red dog blue dog"

replacerFn2(mystring, "fish", "dog", 3)
#[1] "one fish two fish red dog blue dog"
replacerFn2(mystring, "fish", "dog", 4)
#[1] "one fish two fish red fish blue dog"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

sed:仅用该行中第一个出现的字符串替换单词,直到最后一个匹配为止

正则表达式将字符串与第n个特定字符串匹配到最后一个单词

如何在以“”分隔的字符串中找到最后一个单词?C#

替换Golang中第N个出现的字符串

替换每行中第 n 个出现的字符串

将字符串保留到最后一个完整单词的字符数限制,并将剩余单词存储在第二个变量中

Java从文本文件中替换字符串中的一个单词

替换python中字符串中一个单词的所有出现

修剪字符串中字符的第二到最后一个实例

用链接替换主题标签,它仅替换字符串中的最后一个单词

查找字符串中的第一个到最后一个字母

使用 node js / javascript 替换字符串的最后一个单词

用纯JS(无jQuery)替换字符串的最后一个单词

用&替换字符串中最后一个单词之前的逗号

字符串替换最后一个字符出现斜杠

蜂巢:字符串中的第一个和最后一个出现

从第一个字符到最后一个字符的文本框字符串到列表框

在字符串的最后一个单词之前插入“或”

获取字符串的最后一个单词

Excel VBA替换字符串中的第n个单词

如何检查单词是否是字符串中的最后一个单词?

如何返回文本字符串的最后一个单词?

何得到一个字符串,直到最后出现一个字符

将字符串中第N个出现的字符替换为其他内容

熊猫:用列表中的值替换字符串列中的最后一个单词

在第一个实例之后替换python df中字符串的第n次出现或使用groupby选项?

在字符串的第一个和最后一个单词中获取单词

将字符串的最后一个单词删除为 R 中的第一个单词

如何用另一个[ELIXIR / ERLANG]替换字符串中的第n个字符