为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
不负相思意 2022-05-10 15:57:42
如何替换 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) {}```
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您可以尝试使用 的组合bytes.SplitAfter,它将在分隔符(对您来说是旧的)之后拆分您的原始字符串,bytes.Replace()在切片的 N 元素上,然后bytes.Join重新组合您的原始字符串。


您应该检查非常清楚的文档:)


package main


import (

    "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("")))

}


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信