提取两个字符串之间出现的所有不同字符

Extract all occurrences of characters that differ between two strings

我已经使用 adist 计算了两个字符串之间不同的字符数:

a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
b <- "Clément «Un beau combat» entre Simon et Cilic"
adist(a,b) # result 27

现在我想提取 所有出现 的不同字符。在我的示例中,我想获取字符串 "#IvoryCoast TENNIS US OPEN ".

我尝试并使用过:

paste(Reduce(setdiff, strsplit(c(a, b), split = "")), collapse = "")

但是得到的结果不是我想要的!

#IvysTENOP

对于这种情况,您可以使用 gsub。

> a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
> b <- "Clément «Un beau combat» entre Simon et Cilic"
> gsub(b, "", a)
[1] "#IvoryCoast TENNIS US OPEN "

可以这样做,基于paste/reduce解决方案:

paste(Reduce(setdiff, strsplit(c(a, b), split = " ")), collapse = " ")
#[1] "#IvoryCoast TENNIS US OPEN"

或者,如果您想要分开的项目,使用 setdiffstrsplit

setdiff(strsplit(a," ")[[1]],strsplit(b," ")[[1]])
#[1] "#IvoryCoast" "TENNIS"      "US"          "OPEN"