Golang 如何在字节切片中替换指定元素
在Go语言中,切片比数组更强大、灵活、方便,是一种轻量级的数据结构。切片是一种可变长度序列,存储相同类型的元素,不允许在同一切片中存储不同类型的元素。
在Go字节切片中,您可以使用 Replace() 函数替换给定切片中的指定元素。该函数返回包含由老切片中的元素替换而创建的新切片的切片的副本。如果给定的旧切片为空,则它与该切片的开头匹配,并在每个UTF-8序列之后产生m + 1替换m-rune切片。如果m的值小于零,则此函数可以替换给定切片中的任意数量的元素(没有任何限制)。它在字节包下定义,因此您需要在程序中导入字节包以访问Replace函数。
语法:
func Replace(ori_slice, old_slice, new_slice []byte, m int) []byte
这里,ori_slice是原始的字节切片,old_slice是要替换的切片,new_slice是替换old_slice的新切片,m是旧切片替换的次数。
示例1:
// Go程序演示如何替换字节数组的元素
package main
import (
"bytes"
"fmt"
)
//主函数
func main() {
//创建和初始化字节切片,并使用简写声明
slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
slice_2 := []byte{'A', 'P', 'P', 'L', 'E'}
//显示切片
fmt.Println("原始的字节切片:")
fmt.Printf("切片1:%s", slice_1)
fmt.Printf("\n切片2:%s", slice_2)
//使用Replace函数替换给定切片的元素
res1 := bytes.Replace(slice_1, []byte("E"), []byte("e"), 2)
res2 := bytes.Replace(slice_2, []byte("P"), []byte("p"), 1)
//显示结果
fmt.Printf("\n\n新切片:")
fmt.Printf("\n切片1:%s", res1)
fmt.Printf("\n切片2:%s", res2)
}
输出:
原始的字节切片:
切片1:GEEKS
切片2:APPLE
新切片:
切片1:GeeKS
切片2:ApPLE
示例2:
// Go程序演示如何从给定的字节切片中替换指定的元素
package main
import (
"bytes"
"fmt"
)
//主函数
func main() {
//使用Replace函数替换给定切片的元素
res1 := bytes.Replace([]byte("GeeksforGeeks, Geeks, Geeks"), []byte("eks"), []byte("EKS"), 3)
res2 := bytes.Replace([]byte("Hello! i am Puppy, Puppy, Puppy"), []byte("upp"), []byte("ISL"), 2)
res3 := bytes.Replace([]byte("GFG, GFG, GFG"), []byte("GFG"), []byte("geeks"), -1)
res4 := bytes.Replace([]byte("我喜欢冰淇淋"), []byte("喜欢"), []byte("爱"), 0)
//显示结果
fmt.Printf("结果1:%s", res1)
fmt.Printf("\n结果2:%s", res2)
fmt.Printf("\n结果3:%s", res3)
fmt.Printf("\n结果4:%s", res4)
}
输出:
结果1:GeEKSforGeEKS, GeEKS, Geeks
结果2:Hello! i am PISLy, PISLy, Puppy
结果3:geeks, geeks, geeks
结果4:我喜欢冰淇淋