drnf09037160 2017-05-23 20:43
浏览 703
已采纳

替换Golang中第N个出现的字符串

How do I replace the nth (in this case second) occurrence of a string in golang? The following code replaces the example string optimismo from optimism with o from optimism when I want it to be optimismo from

package main

import (
    "fmt"
    "strings"
)

func main() {
    mystring := "optimismo from optimism"
    excludingSecond := strings.Replace(mystring, "optimism", "", 1)
    fmt.Println(excludingSecond)
}
  • 写回答

3条回答 默认 最新

  • dongping6974 2017-05-23 22:37
    关注

    For example,

    package main
    
    import (
        "fmt"
        "strings"
    )
    
    // Replace the nth occurrence of old in s by new.
    func replaceNth(s, old, new string, n int) string {
        i := 0
        for m := 1; m <= n; m++ {
            x := strings.Index(s[i:], old)
            if x < 0 {
                break
            }
            i += x
            if m == n {
                return s[:i] + new + s[i+len(old):]
            }
            i += len(old)
        }
        return s
    }
    
    func main() {
        s := "optimismo from optimism"
        fmt.Printf("%q
    ", s)
        t := replaceNth(s, "optimism", "", 2)
        fmt.Printf("%q
    ", t)
    }
    

    Output:

    "optimismo from optimism"
    "optimismo from "
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 对于这个问题的算法代码
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据