如何替换func函数(s,old,new []字节,n int)[]个字节,其中给定三个字节s,sold,new和整数n的切片返回与s对应的切片,其中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
的组合,它将在分隔符(对您而言较旧)后,在切片的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("")))
}