字节bytes的操作大全

本节要讲的内容将是一个重点内容

  • 1.字节切片比较
  • 2.字节切片判断
  • 3.字节切片是否包含另外切片的值
  • 4.字节切片是否包含相同UTF-8的字符
  • 5.字符切片是否包含相同的 Unicode编码字符
  • 6.字符切片a中包含多少组不重复的Unicode编码切片b
  • 7.将切片按照空格分割成多个子切片
  • 8.将切片按照指定的规则分割成多个子切片
  • 9.字节切片是否包含前缀字符切片
  • 10.字节切片是否包含后缀切片
  • 11.获取第一个子切片所在的位置index
  • 12.获取切片b中任意一个Unicode编码字符第一次出现在切片a中的位置
  • 13.获取字符b 第一次出现在切片a中的位置
  • 14.返回第一个满足规则的unicode编码字符b,在切片a中的位置
  • 15.返回uncode编码第一次出现在切片a中的位置
  • 16.将多个切片通过字符连接成一个大的切片
  • 17.返回切片b最后一次出现在切片a的索引
  • 18.返回字符切片b中任意字符,最后一次出现在切片a中的位置
  • 19.返回字符b最后一次出现在切片a中的位置
  • 20.返回指定规则下,返回字符最后出现在切片a中的位置
  • 21.map方法处理数组数据
  • 22.将字符切片,重复n此组成新的切片
  • 23.用新的切片,替换切片a中的子切片的数据
  • 24.将utf-8的字符切片转换为rune切片
  • 25.将切片按照字符切片b分割成多个子切片数组,不包含切片b
  • 26.将切片按照字符切片b分割成多个子切片数组,包含切片b
  • 27.将切片按照字符切片b分割成n个子切片数组,如果数量达到n则不在继续分割
  • 28.切片字符中,按照空格划分成字符串,首字符设置大写
  • 29.切片全部转换为小写
  • 30.切片全部转换为小写
  • 31.从左边开始切割字符切片s中出现的字符切片b,返回剩余的数据
  • 32.从右边开始切割字符切片s中出现的字符切片b,返回剩余的数据

1.字节切片比较

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte{'b','a'}
  b = []byte{'c'}
  fmt.Println(bytes.Compare(a,b))

}
image.png

两个切片,从下标0的位置,以此进行比较,如果值相等,则进行后面的值比较,直到数据不相等,如果值a > 值b 则返回 1, a == b 返回 0,否则返回-1


2.字节切片判断

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte{'b','a'}
  b = []byte{'c'}
  fmt.Println(bytes.Equal(a,b))
}

判断规则和上面一致

image.png

3.字节切片是否包含另外切片的值

func Contains(b, subslice []byte) bool

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte{'b','a','c'}
  b = []byte{'c'}
  fmt.Println(bytes.Contains(a,b))
}
image.png

4.字节切片是否包含相同UTF-8的字符

func ContainsAny(b []byte, chars string) bool

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a []byte
  a = []byte{'b','a','c'}

  fmt.Println(bytes.ContainsAny(a,"abcde"))
}

检测规则如下

ContainsAny 检测chars的任何 UTF-8 编码的 Unicode 代码点是否在 b 中。

5.字符切片是否包含相同的 Unicode编码字符

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a []byte
  a = []byte("我爱你")
  var c rune = '我'
  fmt.Println(bytes.ContainsRune(a,c))
}
image.png

6.字符切片a中包含多少组不重复的Unicode编码切片b

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte("我我我爱你")
  b = []byte("我")
  fmt.Println(bytes.Count(a,b))
}
image.png

如何 b为空 怎么返回 len(a) + 1 ,即 6

如下

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte("我我我爱你")
  b = []byte("")
  fmt.Println(bytes.Count(a,b))
}
image.png

7.不区分大小写 比较两个切片的大小

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a,b []byte
  a = []byte("a")
  b = []byte("A")
  fmt.Println(bytes.EqualFold(a,b))
}
image.png

7.将切片按照空格分割成多个子切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("ab  c d")
  var list [][]byte
  list = bytes.Fields(a)
  fmt.Println(list)
}
image.png

8.将切片按照指定的规则分割成多个子切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("a=b&c=d&f==e")
  var list [][]byte
  var f = func (s rune) bool{
    if(s=='&'){
      return true
    }
    return false
  }
  list = bytes.FieldsFunc(a,f)
  fmt.Printf("count:%d,%q",len(list),list)
}
image.png

9.字节切片是否包含前缀字符切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-abcdef")
  var b = []byte("xj")
  fmt.Println(bytes.HasPrefix(a,b))
}
image.png

字符切片是否包含后缀切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-abcdef")
  var b = []byte("ef")
  fmt.Println(bytes.HasSuffix(a,b))
}
image.png

11.获取第一个子切片所在的位置index

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-abcdef")
  var b = []byte("ef")
  fmt.Println(bytes.Index(a,b))
}
image.png

12.获取切片b中任意一个Unicode编码字符第一次出现在切片a中的位置

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-我abcdef")
  var b = "efghe"
  fmt.Println(bytes.IndexAny(a,b))
}
image.png

13.获取字符b 第一次出现在切片a中的位置

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-我abcdef")
  var b = byte('e')
  fmt.Println(bytes.IndexByte(a,b))
}
image.png

返回第一个满足规则的unicode编码字符b,在切片a中的位置

package main

import (
"bytes"
"fmt"
)

func main() {
var a = []byte("xj-我爱abcdef")
var f = func(r rune)bool{
return r > rune('我')
}
fmt.Println(bytes.IndexFunc(a,f))
}

image.png

15.返回uncode编码第一次出现在切片a中的位置

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj-我爱abcdef")
  var f = rune('我')
  fmt.Println(bytes.IndexRune(a,f))
}
image.png

16.将多个切片通过字符连接成一个大的切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj")
  var b = []byte("-abc")
  var s = bytes.Join([][]byte{a,b},[]byte("&"))
  fmt.Printf("%q",s)
}
image.png

17.返回切片b最后一次出现在切片a的索引

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xj")
  var b = []byte("-abc")
  var lastIndex = bytes.LastIndex(a,b)
  fmt.Println(lastIndex)
}

未找到则返回-1


image.png

18.返回字符切片b中任意字符,最后一次出现在切片a中的位置

package main
import (
  "bytes"
  "fmt"
)
func main() {
  var a = []byte("xjaaaa")
  var b = "bcdefa"
  var lastIndex = bytes.LastIndexAny(a,b)
  fmt.Println(lastIndex)
}
image.png

19.返回字符b最后一次出现在切片a中的位置

package main

import (
  "bytes"
  "fmt"
)

func main() {
  var a = []byte("xjaaaa")
  var b = byte('a')
  var lastIndex = bytes.LastIndexByte(a,b)
  fmt.Println(lastIndex)
}

image.png

20.返回指定规则下,返回字符最后出现在切片a中的位置

package main

import (
  "bytes"
  "fmt"
)
func main() {
  var a = []byte("123456f")
  var f = func (r rune)bool{
    return r == rune('f')
  }
  var lastIndex = bytes.LastIndexFunc(a,f)
  fmt.Println(lastIndex)
}
image.png

21.map方法处理数组数据

func Map(mapping func(r rune) rune, s []byte) []

package main

import (
  "bytes"
  "fmt"
  "strconv"
)

func main() {
  var a = []byte("123456")
  var f = func (r rune)rune{
    s := string(r)
    num,err := strconv.Atoi(s)
    if(err != nil){
      fmt.Println(err)
      return rune(-1)
    }
    if(num > 5){
      return rune(-1)
    }
   return r
  }
  result := bytes.Map(f,a)
  
  fmt.Println(string(result))
}
image.png

Map 根据映射函数返回字节切片s的所有字符修改后的副本。如果映射返回负值,则字符将从字符串中删除而不会被替换。 s 和输出中的字符被解释为 UTF-8 编码的 Unicode 代码点


22.将字符切片,重复n此组成新的切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  fmt.Printf("%s\n", bytes.Repeat([]byte("abc"),3))
}

image.png

23.用新的切片,替换切片a中的子切片的数据,替换n次

package main

import (
  "bytes"
  "fmt"
)

func main() {
  fmt.Printf("%s\n", bytes.Replace([]byte("121416"),[]byte("1"),[]byte("a"),2))
}
image.png

24.将utf-8的字符切片转换为rune切片

package main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("121416我")
  r := bytes.Runes(s)
  fmt.Printf("%d,%d\n",len(s),len(r))
}
image.png

25.将切片按照字符切片b分割成多个子切片数组,不包含切片b

package main

import (
  "bytes"
  "fmt"
)

func main() {
  fmt.Printf("%s",bytes.Split([]byte("abcdef"),[]byte("d")))
}

image.png

26.将切片按照字符切片b分割成多个子切片数组,包含切片b

  • 27.将切片按照字符切片b分割成n个子切片数组,如果数量达到n则不在继续分割
  • 28.切片字符中,按照空格划分成字符串,首字符设置大写
  • 29.切片全部转换为小写
  • 30.切片全部转换为小写
  • 31.从左边开始切割字符切片s中出现的字符切片b,返回剩余的数据
  • 32.从右边开始切割字符切片s中出现的字符切片b,返回剩余的数据
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容