我有一个[]字节本质上是一个字符串,在这个数组中我找到了一些我想用索引改变的东西:
content []byte
key []byte
newKey []byte
i = bytes.Index(content, key)
所以我找到了内容的关键字(在索引I处),现在我想用newKey替换key但是我似乎找不到添加它的方法我正在尝试一些不起作用的显而易见的事情: )
content[i] = newKey
是否有一些函数允许我在content [] byte中用“newKey”替换“key”?
谢谢,
答案 0 :(得分:4)
根据文章" Go Slices: usage and internals",您可以使用copy
来创建包含正确内容的切片:
package main
import "fmt"
func main() {
slice := make([]byte, 10)
copy(slice[2:], "a")
copy(slice[3:], "b")
fmt.Printf("%v\n", slice)
}
输出:
[0 0 97 98 0 0 0 0 0 0]
在您的情况下,如果len(key) == len(newJey)
:
package main
import "fmt"
import "bytes"
func main() {
content := make([]byte, 10)
copy(content[2:], "abcd")
key := []byte("bc")
newKey := []byte("xy")
fmt.Printf("%v %v\n", content, key)
i := bytes.Index(content, key)
copy(content[i:], newKey)
fmt.Printf("%v %v\n", content, newKey)
}
输出:
[0 0 97 98 99 100 0 0 0 0] [98 99]
[0 0 97 120 121 100 0 0 0 0] [120 121]