从字符串向量中删除方括号

时间:2011-08-25 19:03:19

标签: regex string r

我有一个字符向量,其中每个元素都用括号括起来。我想要 删除括号,只有字符串。

所以我试过了:

n = c("[Dave]", "[Tony]", "[Sara]")

paste("", n, "", sep="")

不幸的是,由于某些原因,这不起作用。

我在使用相同的代码之前执行了相同的任务,并且不确定为什么这次没有工作。

我想从'[Dave]'转到'Dave'

我做错了什么?

4 个答案:

答案 0 :(得分:47)

你可以像这样编写括号:

n = c("[Dave]", "[Tony]", "[Sara]")

gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"

答案 1 :(得分:10)

正则表达式替换将执行此操作。看看gsub()函数。

这可以为您提供所需的内容(它会删除'['或']'的任何实例):

gsub("\\[|\\]", "", n)

答案 2 :(得分:6)

其他答案应该足以获得您想要的输出。我只想简要解释为什么你的尝试不起作用。

paste 连接字符串。如果paste是一个空字符串"",对于一个分隔符也是空字符串的东西,你真的没有改变任何东西。所以paste不能缩短字符串;结果将是相同的(如在您的示例中)或更长。

答案 3 :(得分:5)

如果在tidyverse中工作:

library(tidyverse); library(stringr)

n = c("[Dave]", "[Tony]", "[Sara]")

n %>% str_replace_all("\\[|\\]", "")
[1] "Dave" "Tony" "Sara"