【问题标题】:How can I remove all letters from a string but the last if it is "X"?如何从字符串中删除所有字母,但如果它是“X”,则为最后一个?
【发布时间】:2021-04-16 17:55:34
【问题描述】:

具有 ISBN 的数据集包括一些乱七八糟的字母 - 因为 ISBN 中唯一有效的字母是最后一个位置的 X,我想使用 gsub 删除所有其他字母 - 有什么建议吗?

以下一个具有预期结果的简短示例:

str1

str2

str3

str4

有什么推荐吗?

【问题讨论】:

    标签: r gsub


    【解决方案1】:

    另一种选择是删除所有非数字,同时保留数字末尾的 X:

    gsub("((?<=\\d)X$)|\\D", "\\1", str1, perl = TRUE)
    [1] "1234X" "1234"  ""      "1234" 
    

    【讨论】:

      【解决方案2】:

      我们可以简单地使用gsub在字符串的末尾($)到SKIP,同时匹配一个或多个大写字母([A-Z]+),并将其替换为空白(@ 987654325@)

      gsub("X$(*SKIP)(*F)|[A-Z]+", "", str1, perl = TRUE)
      #[1] "1234X" "1234"  ""      "1234" 
      

      数据

      str1 <- c("1234X", "12X34", "XXXXX", "1234B")
      

      【讨论】:

        猜你喜欢
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 2019-11-22
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        相关资源
        最近更新 更多