如何替换func函数(s,old,new []字节,n int)[]个字节,给定三个
字节s,sold,new和整数n的 slice 返回与s对应的 slice ,其中
旧的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
的组合,该组合将在分隔符(对您而言较旧)之后拆分原始字符串,在 slice 的N元素上拆分bytes.Replace()
,然后使用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("")))
}
关于go - 如何替换Go中的第n个出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949880/