有没有办法将仅定义的字符保留在白名单中的字符串中?

问题描述

我正在寻找一种使用包含数字和加号“ +”的白名单来替换字符串中所有其他字符的方法

string <- "opiqr8929348t89hr289r01++r42+3525"

我首先尝试使用:

gsub("[[:punct:][:alpha:]]","",string)

但这也排除了“ +”:

# [1] "89293488928901423525"

如何从"+"中排除[:alpha:]

所以我的目的是改用白名单:

whitelist <- c("0123456879+")

是否可以以其他方式使用gsub()?因为当我使用白名单时,它将识别应该保留的字符。

解决方法

那呢:

string <- "opiqr8929348t89hr289r01++r42+3525"
gsub("[^0-9+]","",string)
# [1] "89293488928901++42+3525"

这会将所有非0-9或加号以外的内容替换为“”。