golang和python有关字符串操作的对应方法

前端之家收集整理的这篇文章主要介绍了golang和python有关字符串操作的对应方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

golang和python有关字符串操作的对应方法 (来自:flyking)


相关包有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在解析包时候很好用,这里封装一个

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    funcPartition(sstring,sepstring)(headstring,retSepstring,tailstring){@H_502_112@
    @H_502_112@ //Partition(s,sep)->(head,sep,tail)@H_502_112@
    @H_502_112@ index:=strings.Index(s,sep)@H_502_112@
    @H_502_112@ if@H_502_112@ index==-1{@H_502_112@
    head=s@H_502_112@
    retSep=@H_502_112@ ""@H_502_112@
    tail=@H_502_112@ ""@H_502_112@
    }@H_502_112@ else@H_502_112@ {@H_502_112@
    head=s[:index]@H_502_112@
    retSep=sep@H_502_112@
    tail=s[len(head)+len(sep):]@H_502_112@
    }@H_502_112@
    return@H_502_112@
    }@H_502_112@

Partition使用

?
1
2
3
4
5
6
7
8
//包格式头(xy)+数据体+尾(..xy...)@H_502_112@
//...@H_502_112@
_,header,msg:=Partition(data,@H_502_112@ "xy"@H_502_112@ )@H_502_112@
if@H_502_112@ header==@H_502_112@ ""@H_502_112@ {@H_502_112@
@H_502_112@ //没有头(xy)丢包.(也有可能粘包分包导致"...x",最后一个(注意是一个)字符变成了x,这时要把前面的包丢弃,只保留一个x)@H_502_112@
}@H_502_112@ else@H_502_112@ {@H_502_112@
//do@H_502_112@
}@H_502_112@

猜你在找的Go相关文章