如何替换 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("")))
}
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消