使用 r 中的 sub 分别将第一个和第二个“-”替换为“_”和“:”

replace first and second "-" with "_" and ":" respectively using sub in r

我有一个像这样的字符串:

string <- "a-b-c-d"

我想将第一个“-”替换为“_”,将第二个替换为“:”

我正在使用以下命令,但是它将所有“-”替换为“:”

gsub("\-", "_", gsub("\-", ":", string))

期望的输出是:“a_b:c-d”

有什么想法如此受欢迎吗?

抓拍并进行替换

sub("^([^-]+)-([^-]+)-", "\1_\2:", string)
[1] "a_b:c-d"

您几乎走在了正确的轨道上。会帮助你一点。 gsub 是贪心的,因此将替换模式的每个实例。所以你应该改用 sub

你应该这样做:

sub("-", ":", sub("-", "_", string))
[1] "a_b:c-d"

这里先把-换成_。因为我们使用的是 sub,所以只替换了第一个实例。字符串变为 a_b-c-d。现在我们只需要再次替换第一次出现的 -,这次用 : 代替