Golang-bytes包分析
发布时间:2020-12-16 18:52:04 所属栏目:大数据 来源:网络整理
导读:根据 字符在在码表中的顺序从第一个字节进行比较如果第一个字节相同比较下一个直到出现两个在码表中顺序不同的两个字符 如果这是ab则返回1 ba返回-1 如果每个字符比较到最后都是相等的name 返回1 func Compare(a,b []byte) int 返回sep在s中重复出现的次数 f
根据 字符在在码表中的顺序从第一个字节进行比较如果第一个字节相同比较下一个直到出现两个在码表中顺序不同的两个字符 如果这是a>b则返回1 b>a返回-1 如果每个字符比较到最后都是相等的name 返回1 func Compare(a,b []byte) int 返回sep在s中重复出现的次数 func Count(s,sep []byte) int 返回b 是否包含 subslice func Contains(b,subslice []byte) bool 判断a和b是否相等 func Equal(a,b []byte) bool 判断s和t是否相等 忽略大小写 还会转换特殊字符 func EqualFold(s,t []byte) bool 以空白符为分隔符将[]byte 分割为多个[]byte数组比如 []byte("wujunbin wujunbin wjunbin") --> [[119 117 106 117 110 98 105 110] [119 117 106 117 110 98 105 110] [119 117 106 117 110 98 105 110]] func Fields(s []byte) [][]byte 通过函数f判断当前传入的rune是否可以作为分隔符 如果可以返回true 不可以就返回false func FieldsFunc(s []byte,f func(rune) bool) [][]byte 示例 fmt.Println(bytes.FieldsFunc([]byte("吴-俊=滨"),func(r rune) bool{ if r == '-' || r == '='{ return true } else { return false } })) 输出结果 [[229 144 180] [228 191 138] [230 187 168]] 判断prefix 是否是 s的前缀 是返回true 否则返回false func HasPrefix(s,prefix []byte) bool 和HasPrefix一样 但这个是判断后缀的 func HasSuffix(s,suffix []byte) bool 返回sep在s第一次出现的位置 如果不存在返回-1 func Index(s,sep []byte) int 返回 chars在s中第一次出现的位置 如果不存在返回-1 func IndexAny(s []byte,chars string) int 返回 c在s中第一次出现的位置 如果不存在返回-1 func IndexByte(s []byte,c byte) int 返回 c在s中第一次出现的位置 如果不存在返回-1 func IndexRune(s []byte,r rune) int 自定义函数作为来筛选 所需字符在s中的索引 f返回false代表不满足继续如果返回true代表满足返回true 并且不会继续寻找 直接返回当前所在索引 func IndexFunc(s []byte,f func(r rune) bool) int 将s中的每一个[]byte 以 sep为连接符连接起来返回一个 []byte func Join(s [][]byte,sep []byte) []byte 示例 bbs := [][]byte{ []byte("wujunbin"),[]byte("wujunbin")} fmt.Println(string(bytes.Join(bbs,[]byte("-") ))) 返回 c在s中最后一次出现的位置 如果不存在返回-1 func LastIndex(s,sep []byte) int 返回 chars在s中最后一次出现的位置 如果不存在返回-1 func LastIndexAny(s []byte,chars string) int //功能和IndexFunc一样 只不过这个是从后往前进行判断 func LastIndexFunc(s []byte,f func(r rune) bool) int //将count个b组合在一个[]byte中 func Repeat(b []byte,count int) []byte 通过mapping 将传进来的r进行自定义的操作 返回一个自己想要返回的rune值 加入到字符串中 func Map(mapping func(r rune) rune,s []byte) []byte 示例 fmt.Println(string(bytes.Map(func(r rune) rune { if r == '-' { r = 0 } return r },[]byte("wu-ju-nb-in")))) 输出结果 wujunbin 其中 rune 如果设置值为0 做字符串处理式相当于一个空字符传或空字符 将[]byte转换为[]rune func Runes(s []byte) []rune 示例 以下两种写法都可以讲 []byte转换为[]rune 只不过 bytes做了封装 fmt.Println([]rune(string([]byte("吴俊滨")))) fmt.Println(bytes.Runes(([]byte("吴俊滨")))) 用new替代s中的old 通过n指定替代的个数并返回最终替代后的结果 如果n<0那么 s中所有出现的old将全被替代 func Replace(s,old,new []byte,n int) []byte 比如 s中有两个 old 如果 n为1 则只会将第一个old替代为new 示例 fmt.Println(string(bytes.Replace([]byte("wujunjunbin"),[]byte("jun"),[]byte("bin"),1))) 输出结果 wubinjunbin 以sep为分隔符 将s分割 返回的每个[]byte 不包含分隔符 func Split(s,sep []byte) [][]byte 以sep为分隔符 将s分割 返回的每个[]byte 包含分隔符 func SplitAfter(s,sep []byte) [][]byte 以sep为分隔符 将s分割 n代表 切分为几段 n <0 全部返回 n ==0 返回一个空的[][]byte n>0 返回n个[]byte 也就是[][]byte中有n个[]byte 当然最大值不超过 实际可切分的段数 func SplitAfterN(s,sep []byte,n int) [][]byte func SplitN(s,n int) [][]byte //不包含分隔符 示例 fmt.Println( string(bytes.SplitAfterN([]byte("wu-jun-bin"),[]byte("-"),2)[0]), ) fmt.Println( string(bytes.SplitAfterN([]byte("wu-jun-bin"),2)[1]), ) 输出结果 wu- jun-bin 返回s的拷贝 并且这个拷贝的首个字母是大写 --- 有一些BUG 如果首字符是标点符号 func Title(s []byte) []byte 将所有字符小写后返回 func ToLower(s []byte) []byte 将所有字符大写后返回 func ToUpper(s []byte) []byte 将所有字符大写后返回 大部分情况下和uppet是一样的 但有可能一些其他语种的语言会不一样 注意 Title格式 不同于 Upper格式 只是在英文中没区别而已 func ToTitle(s []byte) []byte 切割掉s开头和结尾的cutset字符串并返回 func Trim(s []byte,cutset string) []byte 切割掉s开头的cutset字符串并返回 func TrimLeft(s []byte,cutset string) []byte 切割掉s结尾的cutset字符串并返回 func TrimRight(s []byte,cutset string) []byte 根据函数判断当前字符是否应该割除 返回true表示割除 继续扫描下一个 返回false代表不割除停止扫面 头部和尾部都会扫描 先扫描头部 如果头部扫描完之后全部割除了那么就不会继续尾部了 func TrimFunc(s []byte,f func(r rune) bool) []byte 只扫描头步 和 TrimFunc同理 func TrimLeftFunc(s []byte,f func(r rune) bool) []byte 只扫描尾部 和TrimFunc同理 func TrimRightFunc(s []byte,f func(r rune) bool) []byte 示例如下 fmt.Println(string(bytes.TrimFunc([]byte("awusafaddda"),func(r rune) bool { fmt.Println(string(r)) if r != 'd' { return true } else { return false } }))) 取出s的prefix前缀 如果没有该前缀 则不做改变 func TrimPrefix(s,prefix []byte) []byte 取出s的prefix后缀 如果没有该前缀 则不做改变 func TrimSuffix(s,suffix []byte) []byte 割除s头部和尾部的空格 func TrimSpace(s []byte) []byte
下面是实验测试时的代码 var a,b []byte = []byte{'c','c','z'},[]byte{'c','b','a'} fmt.Println(int('b')) fmt.Println(bytes.Compare(a,b)) fmt.Println(bytes.Count(a,[]byte("cz"))) fmt.Println(bytes.Contains(a,[]byte("czc"))) fmt.Println(bytes.EqualFold([]byte("WUJUNBIN"),[]byte("wujunbin"))) fmt.Println(bytes.Fields([]byte("wujunbin wujunbin wujunbin"))) fmt.Println(bytes.FieldsFunc([]byte("吴-俊=滨"),func(r rune) bool { fmt.Println(string(r)) if r == '-' || r == '=' { return true } else { return false } })) fmt.Println(bytes.HasPrefix([]byte("http://www.baidu.com"),[]byte("s"))) fmt.Println(bytes.Index([]byte("wujunbin"),[]byte("n"))) fmt.Println(bytes.IndexAny([]byte("wujunbin"),"jun")) fmt.Println(bytes.IndexByte([]byte("wujunbin"),byte('b'))) fmt.Println(bytes.IndexRune([]byte("wujunbin"),rune('w'))) fmt.Println(bytes.IndexFunc([]byte("wujunbin"),func(r rune) bool { if r == 'i' || r == 'n' { return true } else { return false } })) bbs := [][]byte{ []byte("wujunbin"),[]byte("wujunbin")} fmt.Println(string(bytes.Join(bbs,[]byte("-")))) fmt.Println(bytes.LastIndex([]byte("wujunbin"),[]byte("n"))) fmt.Println(bytes.LastIndexFunc([]byte("wujunbin"),func(r rune) bool { fmt.Println(string(r)) if r == 'i' || r == 'w' { return true } else { return false } })) fmt.Println(string(bytes.Repeat([]byte("w"),5))) fmt.Println(string(bytes.Map(func(r rune) rune { if r == '-' { r = 0 } return r },[]byte("wu-ju-nb-in")))) fmt.Println([]rune(string([]byte("吴俊滨")))) fmt.Println(bytes.Runes(([]byte("吴俊滨")))) fmt.Println(string(bytes.Replace([]byte("wujunjunbin"),1))) fmt.Println((bytes.Split([]byte("wu-jun-bin"),[]byte("-")))) fmt.Println((bytes.SplitAfter([]byte("wu-jun-bin"),[]byte("-")))) fmt.Println( (bytes.SplitAfterN([]byte("wu-jun-bin"),0)),) fmt.Println( string(bytes.SplitAfterN([]byte("wu-jun-bin"),) fmt.Println( string(bytes.SplitAfterN([]byte("wu-jun-bin"),) fmt.Println(string(bytes.ToLower([]byte("WUJUnidskjfakU")))) fmt.Println(string(bytes.ToTitle([]byte("ujunbisad吴fasfsd")))) fmt.Println(string(bytes.ToUpper([]byte("wwerewrwerwrwerwe")))) fmt.Println(string(bytes.Title([]byte("吴wujunbin")))) fmt.Println(string(bytes.Trim([]byte("a wusa f a d d d d d a"),"a"))) fmt.Println(string(bytes.TrimLeft([]byte("a wusa f a d d d d d a"),"a"))) fmt.Println(string(bytes.TrimFunc([]byte("awusafaddda"),func(r rune) bool { fmt.Println(string(r)) if r != 'd' { return true } else { return false } }))) fmt.Println(string(bytes.TrimPrefix([]byte("http://www.baidu.com"),[]byte("http://")))) fmt.Println(string(bytes.TrimSpace([]byte(" fssd df ")))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- delphi – 如何使用WH_CBT挂钩和WndProc捕获发送到窗口的所
- 使用golang快速开发微信公众平台(九):下载对账单
- Perl 变量的作用my, our, local和全局变量
- panic: time: missing Location in call to Time.In
- Delphi操作Excel大全
- 【[SCOI2010]生成字符串】
- HPU 1002 A + B Problem II【大数】
- VB.Net程序设计:IE收藏夹管理器-增强版
- 通过Handler实现先显示进度条,后台进行数据处理,处理结束
- ADF - Groovy for Total Sum of a Column in a Table - adf