如何替换 Go 中的第 n 次出现

如何替换 func 函数 (s, old, new [] bytes, n int) [] bytes which,给定三个字节切片,s、old、new 和一个整数 n,返回一个对应于 s 的切片,其中第 n 次出现的 old 被 new 替换。如果这种情况不存在,函数返回 s 而不改变它?谢谢



import (


    "fmt"

    "os"

    "strconv"

)


func main() {

    s := os.Args[1]

    old := os.Args[2]

    new := os.Args[3]

    n, _ := strconv.Atoi(os.Args[4])

    fmt.Println(s)

    replaced := replace([]byte(s), []byte(old), []byte(new), n)

    fmt.Println(string(replaced))

}


func replace(s, old, new []byte, i int) (replaced []byte) {


}```


不负相思意
浏览 124回答 1
1回答

陪伴而非守候

您可以尝试使用 的组合bytes.SplitAfter,它将在分隔符(对您来说是旧的)之后拆分您的原始字符串,bytes.Replace()在切片的 N 元素上,然后bytes.Join重新组合您的原始字符串。您应该检查非常清楚的文档:)package mainimport (    "bytes"    "fmt")func main() {    str := []byte("oink oink oink oink")    old := []byte("k")    new := []byte("X")    splitedStr := bytes.SplitAfter(str, old)    splitedStr[2] = bytes.Replace(splitedStr[2], old, new, -1)    fmt.Printf("%s", bytes.Join(splitedStr, []byte("")))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go