从字符串中删除引号空格

Remove quotation marks whitespaces from string

我想从字符串中删除引号空格,在我的例子中,将 ' FIGUEIRAS040C ' 更改为 'FIGUEIRAS040C':

my.ex<- "SELECT * FROM CF_2021 WHERE ID_UNIQUE = ' FIGUEIRAS040C '"

并且输出需要是:

my.ex
[1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = 'FIGUEIRAS040C'"

我尝试 str_pad() 函数和 regex 表达式但没有成功。请问有什么办法解决吗?

1) 匹配引号、任意数量的空格( *)、任意字符的最短字符串(.*?)直到另一个数量空格 ( *) 和引号。将其替换为空格之间的部分并用引号将其括起来。如果可以有多个,则使用 gsub 而不是 sub。没有使用包。

sub("' *(.*?) *'", "'\1'", my.ex)
## [1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = 'FIGUEIRAS040C'"

2) 这种方法适用于 SQLite,如果它支持 trim 函数。

sub("('.*?')", "trim(\1)", my.ex)
## [1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = trim(' FIGUEIRAS040C ')"

例如,

library(sqldf)

sql <- "select * from iris where Species = ' setosa ' limit 3"
sql2 <- sub("('.*?')", "trim(\1)", sql)

sql2
## [1] "select * from iris where Species = trim(' setosa ') limit 3"

sqldf(sql2)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa