Golang 如何在给定分隔符之后拆分字节片

Golang 如何在给定分隔符之后拆分字节片

在Go语言中,切片比数组更强大、灵活、方便,是一种轻量级的数据结构。切片是一个变长序列,存储相似类型的元素,不允许在同一个切片中存储不同类型的元素。
在Go语言的字节切片中,您可以使用SplitAfter()函数在指定分隔符之后拆分切片。此函数将字节片拆分为给定分隔符的每个实例后的所有子片段,并返回包含这些子片段的切片。它在bytes包下定义,因此您必须在程序中导入bytes包以访问SplitAfter函数。

语法:

func SplitAfter(o_slice, sep []byte) [][]byte
Go

这里,o_slice是字节切片,sep是分隔符。如果sep为空,则在每个UTF-8序列后拆分。让我们通过给定的例子来讨论这个概念:

例1:

// Go程序演示了拆分字节片的概念
package main

import (
    "bytes"
    "fmt"
)

func main() {

    //创建和拆分字节片,使用SplitAfter函数
    res1 := bytes.SplitAfter([]byte("****Welcome, to, GeeksforGeeks****"),
                              []byte(","))

    res2 := bytes.SplitAfter([]byte("Learning x how x to x trim x a x slice of bytes"),
                              []byte("x"))

    res3 := bytes.SplitAfter([]byte("GeeksforGeeks, Geek"), []byte(""))

    res4 := bytes.SplitAfter([]byte(""), []byte(","))

    //显示结果
    fmt.Printf("\n最终拆分结果:\n")
    fmt.Printf("\n第1个字节片:%s", res1)
    fmt.Printf("\n第2个字节片:%s", res2)
    fmt.Printf("\n第3个字节片:%s", res3)
    fmt.Printf("\n第4个字节片:%s", res4)
} 
Go

输出:

最终拆分结果:

第1个字节片:[****Welcome,  to,  GeeksforGeeks****]2个字节片:[Learning x  how x  to x  trim x  a x  slice of bytes]3个字节片:[G e e k s f o r G e e k s ,   G e e k]4个字节片:[]
Go

例2:

// 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)

    //使用SplitAfter函数拆分字节片
    res1 := bytes.SplitAfter(slice_1, []byte("eek"))
    res2 := bytes.SplitAfter(slice_2, []byte(""))
    res3 := bytes.SplitAfter(slice_3, []byte("%"))

    //显示结果
    fmt.Printf("\n\n拆分后的结果:\n")
    fmt.Printf("\n第1个字节片:%s", res1)
    fmt.Printf("\n第2个字节片:%s", res2)
    fmt.Printf("\n第3个字节片:%s", res3)

} 
Go

输出:

原始字节片:1个字节片:!!GeeksforGeeks##
第2个字节片:Apple
第3个字节片:%g%e%e%k%s%

拆分后的结果:
第1个字节片:[!!Geek sforGeek s##]2个字节片:[A p p l e]3个字节片:[% g% e% e% k% s% ]
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册