Golang 如何修剪字节片

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程