2014-03-26 113 views
0

當添加的空間,我有一個字符串,如下所示:字符串滿足給定模式

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

有其改造爲

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

換句話說任何有效的方式,我會喜歡在遇到大寫字母或特殊字符時添加空格(

回答

1

一種可能性:

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

試試這個:

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

捐贈:

[1] "Abc Def (123)" 

如果用空格字符串有沒有一個字塊就可以簡化爲這樣:

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

這不適用於像「AbcDef(123)AaA(fsfsd)AAA」這樣的字符串。 @ droopy的解決方案將適用於任何字符串 –

+0

好點。已修改。 –

0

礦的有點kludgy,並使用兩個gsub s。內部gsub增加空格,外部gsub刪除前導空格。

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