登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-01 13:27:25 447浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何替换 Go 中的第 n 次出现》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

如何替换一个 func 函数 (s, old, new [] bytes, n int) [] bytes 其中,给定三个 字节切片 s、旧的、新的和整数 n,返回与 s 相对应的切片,其中 第 n 次出现的旧值被新值替换。如果这种情况不存在, 函数返回 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) {

}```

解决方案


您可以尝试使用 bytes.splitafter 的组合,这将在分隔符之后分割原始字符串(对您来说旧), bytes.replace() 在切片的 n 元素上,然后 bytes.join重新组合原始字符串。

您应该检查 documentation,这很清楚:)

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>