我在向量中有一系列字符串,需要从字符串中删除匹配的起始模式。 但是,我不知道图案或它有多长。
stringa <- c("apple_tart", "apple_pie", "apple_fritter")
stringb <- c("baby breath", "baby oil", "baby doll", "baby name")
我希望结果是这样。 我需要一个适用于 a 和 b 的函数或方法
resultsa <- c("tart", "pie", "fritter")
resultsb <- c("breath", "oil", "doll", "name")
我知道如果我知道模式或匹配模式有多长,我可以使用 str_remove 来做到这一点。 有没有办法做到这一点? 也许首先找到起始字符串模式然后使用 str_remove?
您可以编写一个函数来查找最长的共享前缀。例如
common_prefix <- function(x) {
best <- min(nchar(x))
while (best > 0) {
prefix <- substr(x,1, best)
if (all(prefix==prefix[1])) {
return(prefix[1])
} else {
best <- best - 1
}
}
return(NA)
}
common_prefix(stringa)
# [1] "apple_"
common_prefix(stringb)
# [1] "baby "