【问题标题】:replace first and second "-" with "_" and ":" respectively using sub in r分别使用 r 中的 sub 将第一个和第二个“-”替换为“_”和“:”
【发布时间】:2021-09-05 13:43:52
【问题描述】:

我有一个类似的字符串:

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

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

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

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

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

任何想法都如此受欢迎?

【问题讨论】:

    标签: r regex gsub stringr


    【解决方案1】:

    作为一个组捕获并进行替换

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

    【讨论】:

      【解决方案2】:

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

      你应该这样做:

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

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

      【讨论】:

        猜你喜欢
        • 2020-04-24
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多