假设我有一个字符串marco <- 'polo'
。有什么方法可以将marco
嵌入到另一个字符串的中间,例如x <- 'John plays water marco.'
并x
返回'John plays water polo.'
?
修改
大卫亲切地提出的解决方案确实适用于我上面发布的假设问题,但我试图得到的是:
data <- c('kek','koki','ukak','ikka')
V <- c('a|e|i|o|u')
如何删除解决方案可以管理的所有元音(gsub(V,'',data)
),而不是指定两个k之间的所有元音?显然gsub('kVk','',data)
不起作用。任何帮助将不胜感激。
答案 0 :(得分:4)
如果你想删除两个“k”字母之间的所有元音,我建议如下:
V <- '[aeiou]'
data <- c('kek', 'koki', 'ukak', 'ikka', 'keeuiokaeioukaeiousk')
gsub(paste0('(?:\\G(?!^)|[^k]*k(?=[^k]+k))\\K', V), '', data, perl=T)
# [1] "kk" "kki" "ukk" "ikka" "kkksk"
\G
功能是一个可以在两个位置之一匹配的锚点;字符串位置的开头或最后一个匹配结束时的位置。 \K
重置报告的匹配的起始点,并且不再包括任何先前消耗的字符,这类似于lookbehind。
答案 1 :(得分:0)
或者,使用给定的示例:
V <- 'a|e|i|o|u' ## or equivalently '[aeiou]'
dd <- c('kek','koki','ukak','ikka','kaaaak')
gsub(paste0("k(",V,")+k"),"kk",dd)
## [1] "kk" "kki" "ukk" "ikka" "kk"
我猜你可能(?)想要在k
之间删除多个元音;我在正则表达式中添加了+
来执行此操作。