相关包有strings,strconv
判断是否以某字符串打头/结尾
strings.HasPrefix(s string,prefix string) bool=> 对应python的str.startswith
strings.HasSuffix(s string,suffix string) bool => 对应python的str.endswith字符串分割
strings.Split(s string,sep string) []string => 对应python的str.split返回子串索引
strings.Index(s string,sub string) int => 对应python的str.index
strings.LastIndex 最后一个匹配索引字符串连接
strings.Join(a []string,sep string) string =>对应python的str.join字符串替换
strings.Replace(s,old,new string,n int) string =>对应python的str.replace转为大写/小写
strings.ToUpper(s string) string
strings.ToLower
对应python的str.upper,str.lower子串个数
strings.Count(s string,sep string) int
对应python的 str.count
Partition
python的str.partition在解析包时候很好用,这里封装一个funcPartition(sstring,sepstring)(headstring,retSepstring,tailstring){ //Partition(s,sep)->(head,sep,tail) index:=strings.Index(s,sep) ifindex==-1{ head=s retSep="" tail="" }else{ head=s[:index] retSep=sep tail=s[len(head)+len(sep):] } return }
Partition使用
//包格式头(xy)+数据体+尾(..xy...) //... _,header,msg:=Partition(data,"xy") ifheader==""{ //没有头(xy)丢包.(也有可能粘包分包导致"...x",最后一个(注意是一个)字符变成了x,这时要把前面的包丢弃,只保留一个x) }else{ //do }