bytes包提供了对字节切片进行读写操作的一系列函数
字节切片处理的函数比較多,分为基本处理函数,比較函数,后缀检查函数,索引函数,切割函数,
大写和小写处理函数和子切片处理函数等.
1.字节切片基本处理函数api
1.1Contains()函数
func Contains(b,subslice []bytes) bool
1.2Count()函数
func Count(s,sep[]byte) int
1.3Repeat()函数
func Repeat(b[]byte,count int) []byte
1.4Replace()函数
func Replace(s,old,new []byte,n int) []byte
1.5Runes()函数
func Runes(s []byte) []rune
1.6Join()函数
Join函数的功能是用字节切片sep把s中的每一个字节切片连成一个字节切片并返回.
func Join(s [][]byte,sep[]byte) []byte
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
b := []byte("mChenys")
sublice1 := []byte("m")
sublice2 := []byte("M")
fmt.Println(bytes.Contains(b,sublice1))
fmt.Println(bytes.Contains(b,sublice2))
s := []byte("hahaahaaa")
sep1 := []byte("hah")
sep2 := []byte("aa")
sep3 := []byte("a")
fmt.Println(bytes.Count(s,sep1))
fmt.Println(bytes.Count(s,sep2))
fmt.Println(bytes.Count(s,sep3))
b = []byte("ha")
fmt.Println(string(bytes.Repeat(b,1)))
fmt.Println(string(bytes.Repeat(b,2)))
s = []byte("hello,world")
old := []byte("o")
news := []byte("ee")
fmt.Println(string(bytes.Replace(s,old,news,0)))
fmt.Println(string(bytes.Replace(s,old,news,1)))
fmt.Println(string(bytes.Replace(s,old,news,2)))
fmt.Println(string(bytes.Replace(s,old,news,-1)))
s = []byte("你好世界")
r := bytes.Runes(s)
fmt.Println("转换前字符串的长度: ",len(s))
fmt.Println("转换后字符串的长度: ",len(r))
s := [][]byte{[]byte("你好"),[]byte("世界")}
sep1 := []byte(",")
fmt.Println(string(bytes.Join(s,sep1)))
sep2 := []byte("#")
fmt.Println(string(bytes.Join(s,sep2)))
}
2.字节切片比較函数
2.1Compare()函数
func Compare(a,b[]byte) int
2.2Equal()函数
func Equal(a,b[]byte) bool
2.3EqualFold()函数
func EqualFold(s,t[]byte) bool
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
a := []byte("abc")
b := []byte("a")
fmt.Println(bytes.Compare(a,b))
b =[]byte("abcd")
fmt.Println(bytes.Compare(a,b))
b =[]byte("abC")
fmt.Println(bytes.Compare(a,b))
b =[]byte("b")
fmt.Println(bytes.Compare(a,b))
a = []byte("abc")
b = []byte("ABC")
fmt.Println(bytes.Equal(a,b))
fmt.Println(bytes.Equal(a,nil))
b = []byte("abc")
fmt.Println(bytes.Equal(a,b))
a = []byte("abc")
b = []byte("ABC")
fmt.Println(bytes.EqualFold(a,b))
}
3.字节切片前后缀检查
3.1HasPrefix()函数
func HasPrefix(s,prefix[]byte) bool
3.2HashSuffix()函数
func HashSuffix(s,suffix[]byte) bool
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
s := []byte("mChenys")
prefix := []byte("m")
fmt.Println(bytes.HasPrefix(s,prefix))
prefix = []byte("men")
fmt.Println(bytes.HasPrefix(s,prefix))
suffix := []byte("ys")
fmt.Println(bytes.HasSuffix(s,suffix))
}
4.字节切片位置索引函数
字节切片位置索引函数共同拥有8个,Index(),IndexAny(),IndexByte(),IndexFunc(),IndexRune(),
LastIndex(),LastIndexAny()和LastIndexFunc().
4.1index()函数
func Index(s,sep []byte) int
4.2IndexAny()函数
func IndexAny(s []byte,chars string) int
4.3IndexByte()函数
func IndexByte(s[]byte,c byte) int
4.4IndexFunc()函数
func IndexFunc(s[]byte,f func(r rune)bool) int
4.5IndexRune()函数
func IndexRune(s[]byte,r rune) int
4.6LastIndex()函数
func LastIndex(s,sep[]byte) int
4.7LastIndexAny()函数
func LastIndexAny(s[]byte,chars string) int
4.8LastIndexFunc()函数
func LastIndexFunc(s[]byte,f func(r rune)bool) int
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
a := []byte("aaaaa")
fmt.Println(bytes.Index(a,[]byte("a")))
fmt.Println(bytes.Index(a,[]byte("aa")))
fmt.Println(bytes.Index(a,[]byte("b")))
fmt.Println(bytes.IndexAny(a,"a"))
fmt.Println(bytes.IndexAny(a,"aa"))
s := []byte("google")
var ch byte = 'g'
fmt.Println(bytes.IndexByte(s,ch))
fmt.Println(bytes.IndexFunc(s,func (a rune)bool{
if a == 'o'{
return true
}else{
return false
}
}))
fmt.Println(bytes.IndexRune(s,'e'))
fmt.Println(bytes.IndexRune(s,'a'))
fmt.Println(bytes.LastIndex(s,[]byte("g")))
fmt.Println(bytes.LastIndex(s,[]byte("e")))
fmt.Println(bytes.LastIndex(s,[]byte("o")))
fmt.Println(bytes.LastIndexAny(s,"gle"))
fmt.Println(bytes.LastIndexAny(s,"l"))
fmt.Println(bytes.LastIndexAny(s,"ge"))
fmt.Println(bytes.LastIndexFunc(s,func(r rune)bool{
if r=='g'{
return true
}else {
return false
}
}))
}
5.字节切片切割函数
字节切片切割函数共同拥有6个,Fields(),FieldsFunc(),Split(),SplitN(),
SplitAfter()和SplitAfterN()
5.1Fields()函数
func Fields(s[]byte) [][]byte wq
5.2FieldsFunc()函数
func FieldsFunc(s []byte,f func(r rune)bool) [][]byte
5.3Split()函数
func Split(s,sep[]byte)[][]byte
5.4SplitAfter()函数
func SplitAfter(s,sep[]byte)[][]byte
5.5SplitAfterN()函数
參数n决定返回切片的长度:假设n>0,最多返回n个子字节切片,
子切片可能包括未切分的字节序列;假设n=0。返回空切片假设n< 0返回全部子切片。*/
func SplitAfterN(s,sep[]byte,n int)[][]byte
5.6SplitN()函数
func SplitN(s,sep []byte,n int)[][]byte
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
s := []byte("a b c")
for _,v := range bytes.Fields(s){
fmt.Print(string(v)+",")
}
for _,v := range bytes.FieldsFunc(s,func(r rune)bool{
if r == ' '{
return true
}else{
return false
}
}){
fmt.Print(string(v)+",")
}
s = []byte("吃饭和睡觉")
for _,v := range bytes.Split(s,[]byte("和")){
fmt.Print(string(v)+",")
}
for _,v := range bytes.Split(s,nil){
fmt.Print(string(v)+",")
}
s = []byte("abbcbbd")
for _,v := range bytes.SplitAfter(s,[]byte("bb")){
fmt.Print(string(v)+",")
}
for _,v := range bytes.SplitAfter(s,nil){
fmt.Print(string(v)+",")
}
s = []byte("hehehe")
for _,v := range bytes.SplitAfterN(s,[]byte("he"),0){
fmt.Print(string(v)+",")
}
for _,v := range bytes.SplitAfterN(s,[]byte("he"),1){
fmt.Print(string(v)+",")
}
for _,v := range bytes.SplitAfterN(s,[]byte("he"),-1){
fmt.Print(string(v)+",")
}
s = []byte("hahaha")
for _,v := range bytes.SplitN(s,[]byte("ha"),0){
fmt.Print(string(v)+",")
}
for _,v := range bytes.SplitN(s,[]byte("ha"),1){
fmt.Print(string(v)+",")
}
for _,v := range bytes.SplitN(s,[]byte("ha"),-1){
fmt.Print(string(v)+",")
}
}
6.字节切片大写和小写处理
共同拥有7个函数,Title(),ToTitle(),ToTitleSpecial(),ToLower(),ToLowerSpecial(),ToUpper()
和ToUpperSpecial().
6.1Title()函数
func Title(s[]byte) []byte
6.2ToTitle()函数
func ToTitle(s []byte) []byte
6.3ToTitleSpecial()函数
func ToTitleSpecial(_case unicode.SpecialCase,s []byte) []byte
6.4ToLower()函数
func ToLower(s []byte)[]byte
6.5ToLowerSpecial()函数
func ToLowerSpecial(_case unicode.SpecialCase, s []byte) []byte
6.6ToUpper()函数
func ToUpper(s []byte) []byte
6.7ToUpperSpecial()函数
func ToUpperSpecial(_case unicode.SpecialCase, s []byte) []byte
package main
import(
"fmt"
"bytes"
"unicode"
)
func main(){
s := []byte("abc")
fmt.Println(string(bytes.Title(s)))
fmt.Println(string(bytes.ToTitle(s)))
fmt.Println(string(bytes.ToTitleSpecial(unicode.AzeriCase,s)))
s = []byte("ABC")
fmt.Println(string(bytes.ToLower(s)))
fmt.Println(string(bytes.ToLowerSpecial(unicode.AzeriCase,s)))
s = []byte("abc")
fmt.Println(string(bytes.ToUpper(s)))
fmt.Println(string(bytes.ToUpperSpecial(unicode.AzeriCase,s)))
}
7.子字节切片处理函数
共同拥有9个,Trim(),TrimFunc(),TrimLeft(),TrimLeftFunc(),TrimRight(),TrimRightFunc(),
TrimSpace(),TrimPrefix()和TrimSuffix().
7.1Trim()函数
func Trim(s []byte, cutset string) []byte
7.2TrimFunc()函数
func TrimFunc(s []byte, f func(r rune) bool) []byte
7.3TrimLeft()函数
func TrimLeft(s []byte, cutset string) []byte
7.4TrimLeftFunc()函数
func TrimLeftFunc(s []byte, f func(r rune) bool) []byte
7.5TrimRight()函数
func TrimRight(s []byte, cutset string) []byte
7.6TrimRightFunc()函数
func TrimRightFunc(s []byte, f func(r rune) bool) []byte
7.7TrimSpace()函数
func TrimSpace(s []byte) []byte
7.8TrimPrefix()函数
func TrimPrefix(s, prefix []byte) []byte
7.9TrimSuffix()函数
func TrimSuffix(s, suffix []byte) []byte
[实例]
package main
import(
"fmt"
"bytes"
)
func main(){
s := []byte(" abc ")
fmt.Println(string(bytes.Trim(s," "))+"d")
s = []byte("hello world")
fmt.Println(string(bytes.TrimFunc(s,func(r rune)bool{
if r=='h' || r=='d'{
return true
}else{
return false
}
})))
s = []byte("helloh")
fmt.Println(string(bytes.TrimFunc(s,func(r rune)bool{
if r=='h' || r=='o'{
return true
}else{
return false
}
})))
s = []byte("helloh")
fmt.Println(string(bytes.TrimFunc(s,func(r rune)bool{
if r=='h' && r=='o'{
return true
}else{
return false
}
})))
fmt.Println(string(bytes.TrimLeft(s,"h")))
fmt.Println(string(bytes.TrimLeft(s,"l")))
fmt.Println(string(bytes.TrimLeftFunc(s,func(r rune)bool{
if r == 'h' || r=='l'{
return true
}else{
return false
}
})))
fmt.Println(string(bytes.TrimRight(s,"oh")))
fmt.Println(string(bytes.TrimRightFunc(s,func(r rune)bool{
if r == 'h'{
return true
}else{
return false
}
})))
s = []byte(" abc ")
fmt.Println("d"+string(bytes.TrimSpace(s))+"d")
s = []byte("mChenys")
fmt.Println(string(bytes.TrimPrefix(s,[]byte("mC"))))
fmt.Println(string(bytes.TrimPrefix(s,[]byte("en"))))
s = []byte("mChenys")
fmt.Println(string(bytes.TrimSuffix(s,[]byte("ys"))))
fmt.Println(string(bytes.TrimSuffix(s,[]byte("en"))))
}
请发表评论