Golang 如何修剪字节片
在Go语言中,切片比数组更强大、灵活、方便,是一种轻量级的数据结构。切片是一种变长序列,它存储相似类型的元素,您不能在同一切片中存储不同类型的元素。在Go字节切片中,您可以使用 Trim() 函数修剪给定切片中的所有前导和尾随UTF-8编码码点。该函数通过切除指定字符串中指定的所有前导和尾随UTF-8编码码点来返回原始切片的子切片。如果给定的字节片不包含指定的字符串,则此函数返回原始字节片而不作任何更改。它是在bytes包下定义的,因此,在程序中访问Trim函数,您必须导入bytes包。
语法:
func Trim(ori_slice[]byte, cut_string string) []byte
在这里, ori_slice 是原始的字节片,cut_string代表您想在给定的字节片中修剪的字符串。让我们通过给定的示例来讨论这个概念:
示例1:
// Go程序演示字节片修剪的概念
package main
import (
"bytes"
"fmt"
)
func main() {
//创建和初始化字节片,使用简写声明
slice_1 := []byte{'!', '!', 'G', 'e', 'e', 'k', 's', 'f',
'o', 'r', 'G', 'e', 'e', 'k', 's', '#', '#'}
slice_2 := []byte{'*', '*', 'A', 'p', 'p', 'l', 'e', '^', '^'}
slice_3 := []byte{'%', 'g', 'e', 'e', 'k', 's', '%'}
//打印切片
fmt.Println("原始的切片:")
fmt.Printf("切片1: %s", slice_1)
fmt.Printf("\n切片2: %s", slice_2)
fmt.Printf("\n切片3: %s", slice_3)
//使用Trim函数从给定的字节片中修剪指定的前导和尾随Unicode点
res1 := bytes.Trim(slice_1, "!#")
res2 := bytes.Trim(slice_2, "*^")
res3 := bytes.Trim(slice_3, "@")
// 显示结果
fmt.Printf("\n修剪后的切片:\n")
fmt.Printf("\n切片1: %s", res1)
fmt.Printf("\n切片2: %s", res2)
fmt.Printf("\n切片3: %s", res3)
}
输出:
原始的切片:
切片1: !!GeeksforGeeks##
切片2: **Apple^^
切片3: %geeks%
修剪后的切片:
切片1: GeeksforGeeks
切片2: Apple
切片3: %geeks%
示例2:
// Go程序演示字节切片的修剪概念
package main
import (
"bytes"
"fmt"
)
func main() {
// 创建和修剪字节片,使用Trim函数
res1 := bytes.Trim([]byte("****Welcome to GeeksforGeeks****"), "*")
res2 := bytes.Trim([]byte("!!!!Learning how to trim a slice of bytes@@@@"), "!@")
res3 := bytes.Trim([]byte("^^Geek&&"), "$")
// 显示结果
fmt.Printf("最终的切片:\n")
fmt.Printf("\n切片1: %s", res1)
fmt.Printf("\n切片2: %s", res2)
fmt.Printf("\n切片3: %s", res3)
}
输出:
最终的切片:
切片1: Welcome to GeeksforGeeks
切片2: Learning how to trim a slice of bytes
切片3: ^^Geek&&
另一种方法:使用bytes.Trim函数
使用bytes.Trim函数可以修剪一段字节切片。bytes包的Trim函数需要两个参数:一个字节切片和一个包含需要修剪的字符的字符串,用于修剪切片的开头和结尾。该函数返回一个新的切片,其中包含原始切片中所有指定字符的实例被修剪掉的内容。
请注意,bytes.Trim函数可用于修剪任何一组字符,而不仅仅是空格。要修剪特定的一组字符,只需将包含这些字符的字符串作为第二个参数传递给bytes。
package main
import (
"bytes"
"fmt"
)
func main() {
byteSlice := []byte(" Hello, World! ")
trimmed := bytes.TrimSpace(byteSlice)
fmt.Println(string(trimmed)) // "Hello, World!"
}
输出 :
Hello, World!
时间复杂性: O(n)
辅助空间: O(n)