在满足给定模式时,在字符串中添加空格

时间:2014-03-26 13:52:14

标签: r

我有一个字符串如下:

a<-c("AbcDef(123)")
> a
[1] "AbcDef(123)"

有没有有效的方法将其转换为

a<-c("Abc Def (123)")

换句话说,我想在遇到大写字母或特殊字符时添加一个空格(。

3 个答案:

答案 0 :(得分:1)

一种可能性:

 gsub("(?<=[^A-Z(])(?=[A-Z(])", " ", a, perl=T)

答案 1 :(得分:0)

试试这个:

gsub("(?<=.)([A-Z(])", " \\1", a, perl = TRUE)

,并提供:

[1] "Abc Def (123)"

如果带有空格的字符串没有单字符片段,则可以简化为:

gsub("(.)([A-Z(])", "\\1 \\2", a)

答案 2 :(得分:0)

我有点kludgy并使用两个gsub s。内部gsub添加空格,外部gsub删除前导空格。

a <- "AbcDef(123)"
gsub("^\\s", "", gsub("([A-Z(])", " \\1", a))