【问题标题】:Extract all occurrences of characters that differ between two strings提取两个字符串之间所有不同的字符
【发布时间】:2015-05-05 02:49:20
【问题描述】:

我已经使用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

【问题讨论】:

    标签: r string character


    【解决方案1】:

    对于这种情况,您可以使用 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 "
    

    【讨论】:

      【解决方案2】:

      你可以这样做,基于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" 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多