📌  相关文章
📜  如何在Golang中替换字节切片中的指定元素?

📅  最后修改于: 2021-10-25 02:14:40             🧑  作者: Mango

在 Go 语言中切片比数组更强大、灵活、方便,是一种轻量级的数据结构。切片是一个可变长度的序列,用于存储相似类型的元素,不允许在同一个切片中存储不同类型的元素。
在 Go 字节切片中,您可以使用Replace()函数替换给定切片中的指定元素。此函数返回包含通过替换旧切片中的元素创建的新切片的切片的副本。如果给定的旧切片为空,则它在切片的开头匹配,并且在每个 UTF-8 序列之后,它会产生m+1替换 m-rune 切片。如果 m 的值小于零,则此函数可以替换给定切片中的任意数量的元素(没有任何限制)。它是在 bytes 包下定义的,因此您必须在程序中导入 bytes 包才能访问 Repeat函数。

句法:

func Replace(ori_slice, old_slice, new_slice []byte, m int) []byte

在这里,ori_slice是字节的原始片,old_slice是要替换该片,new_slice是新的片取代了old_slice,m是时代的old_slice更换次数。

示例 1:

// Go program to illustrate how to replace
// the element of the slice of bytes
package main
  
import (
    "bytes"
    "fmt"
)
  
// Main function
func main() {
  
    // Creating and initializing
    // the slice of bytes
    // Using shorthand declaration
    slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
    slice_2 := []byte{'A', 'P', 'P', 'L', 'E'}
  
    // Displaying slices
    fmt.Println("Original slice:")
    fmt.Printf("Slice 1: %s", slice_1)
    fmt.Printf("\nSlice 2: %s", slice_2)
  
    // Replacing the element
    // of the given slices
    // Using Replace function
    res1 := bytes.Replace(slice_1, []byte("E"), []byte("e"), 2)
    res2 := bytes.Replace(slice_2, []byte("P"), []byte("p"), 1)
  
    // Display the results
    fmt.Printf("\n\nNew Slice:")
    fmt.Printf("\nSlice 1: %s", res1)
    fmt.Printf("\nSlice 2: %s", res2)
}

输出:

Original slice:
Slice 1: GEEKS
Slice 2: APPLE

New Slice:
Slice 1: GeeKS
Slice 2: ApPLE

示例 2:

// Go program to illustrate how to replace
// the specified element from the given
// slice of bytes
package main
  
import (
    "bytes"
    "fmt"
)
  
// Main function
func main() {
  
    // Replacing the element
    // of the given slices
    // Using Replace function
    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("I like icecream"), []byte("like"), []byte("love"), 0)
  
    // Display the results
    fmt.Printf("Result 1: %s", res1)
    fmt.Printf("\nResult 2: %s", res2)
    fmt.Printf("\nResult 3: %s", res3)
    fmt.Printf("\nResult 4: %s", res4)
}

输出:

Result 1: GeEKSforGeEKS, GeEKS, Geeks
Result 2:Hello! i am PISLy, PISLy, Puppy
Result 3:geeks, geeks, geeks
Result 4:I like icecream