我在R中有一个数据框如下 -
some_string <- c("::hello:world:", ":hello:world:again:::",":::::::hello::::")
df = as.data.frame(some_string)
df
some_string
1 ::hello:world:
2 :hello:world::::again:::
3 :::::::hello::::
如果多次出现,我希望在这一列之间只有:
个特殊字符。输出数据框应为 -
some_string
1 hello:world
2 hello:world:again
3 hello
基本上,我需要由:
分隔的字符串,但不需要在字符串的前面和后面。
答案 0 :(得分:3)
您可以使用
gsub("^:+|:+$", "", some_string)
# [1] "hello:world" "hello:world::::again" "hello"
在这里,我们使用^
和$
将匹配项锚定到字符串的开头或结尾,并使用|
来匹配开头“或”结尾处的匹配项。
要将多个冒号折叠成一个冒号,您也可以运行
gsub(":+", ":", gsub("^:+|:+$", "", some_string))
# [1] "hello:world" "hello:world:again" "hello"
只用一个替换剩余重复冒号的任何实例。