字节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("%sn", bytes.Repeat([]byte("abc"),3))
}
image.png
23.用新的切片,替换切片a中的子切片的数据,替换n次
package main
import (
"bytes"
"fmt"
)
func main() {
fmt.Printf("%sn", 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,%dn",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,返回剩余的数据
- Python 实现一个火车票查询的工具
- HTTPS迎来春天:Chrome计划将所有HTTP标记为不安全
- View绘制流程
- Linux Rootkit系列一:LKM的基础编写及隐藏
- Swift基础语法(常量变量、数据类型、元组、可选、断言)
- 【实战】Python 读写 Excel 实例应用
- 10万WordPress网站沦陷:恶意软件SoakSoak来了
- 自己动手实现一个Android Studio插件
- Oracle数据库漏洞分析:无需用户名和密码进入你的数据库
- Android动态加载入坑指南
- ModSecurity技巧:使用ssdeep检测Webshell
- 装饰者模式
- 经典算法学习之分治法(以排列、组合程序为例)
- Bash概论 - Linux系列教程补充篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux: 添加一个IP地址
- Nginx简易防CC策略规则
- 如何编写和优化WordPress网站的Robots.txt
- 如何处理WordPress网站404状态死链
- (三)RecyclerView简单滑动场景分析
- AWS EC2实例开启IPv6方法 阅读模式
- centos7宝塔环境安装VeryNginx waf系统实现高级防火墙功能
- 腾讯云中关于授权子用户QCloudResourceFullAccess权限后使用api接口创建购买cvm没有支付权限的解决办法
- centos7中systemctl系统服务和资源限制故障
- centos7 安装zabbix并监控windows服务器
- 宝塔面板插件-shadowsocks可视化管理
- Android面试知识笔记:那些年面试官常问的知识点...(附详细解析)
- 聊聊dubbo-go的failbackCluster
- Docker环境准备
- js实现HTML页面时钟动态显示