【发布时间】:2021-09-05 13:43:52
【问题描述】:
我有一个类似的字符串:
string <- "a-b-c-d"
我想将第一个“-”替换为“_”,第二个替换为“:”
我正在使用以下命令,但是它将所有“-”替换为“:”
gsub("\\-", "_", gsub("\\-", ":", string))
期望的输出是:“a_b:c-d”
任何想法都如此受欢迎?
【问题讨论】:
我有一个类似的字符串:
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。现在我们只需要再次替换第一次出现的-,这次用: 代替
【讨论】: