R:如何用反逗号将字符串的每个元素括起来

问题描述 投票:1回答:2

我想从字符串中删除空格,句号和连字符,并用反逗号将结果字符串中的每个元素括起来。此外,我想确保所有字母都大写。

我知道如何删除特殊字符列表,但是由于缺乏对正则表达式或其他字符串操作函数(例如,字符串函数)的经验,因此我无法添加封闭的反逗号。

如何转换字符串,例如

test1 <- "A.1, b-1, C"             # start string
test2 <- gsub("[ .-]", "", test1)  # remove period and hyphen

生成字符串'A1','B1','C'

r regex gsub stringr
2个回答
1
投票

在用strsplit删除,并将大小写转换为大写之后,我们可以在.-上使用gsub,然后使用零个或多个空格

strsplit(gsub("[.-]", "", toupper(test1)), ",\\s*")[[1]]
#[1] "A1" "B1" "C" 

如果需要单个字符串,则在删除.-之后,捕获单词(\\w+)并通过将'包裹在捕获组的反向引用(\\1)周围来替换它

gsub('(\\w+)', "'\\1'", gsub("[.-]+", "", toupper(test1)))
#[1] "'A1', 'B1', 'C'"

1
投票

使用

test1 <- "A.1, b-1, C"
test2 <- gsub("[^,\\w]+", "", test1, perl=TRUE)
test2 <- paste0("'", gsub(",", "','", toupper(test2)), "'")

用逗号除引号外的所有非单词字符用gsub("[^,\\w]+", "", test1, perl=TRUE),然后用引号内的逗号替换所有逗号,并用paste0("'", gsub(",", "','", toupper(test2)), "'")用引号引起来。

© www.soinside.com 2019 - 2024. All rights reserved.