美文网首页
【每天一个Go知识点】(8) go : 字符串操作

【每天一个Go知识点】(8) go : 字符串操作

作者: HAO延WEI | 来源:发表于2021-10-29 10:38 被阅读0次

    转载地址:https://studygolang.com/articles/702

    判断是否以某字符串打头/结尾

    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在解析包时候很好用,这里封装一个
    
    func Partition(s string, sep string) (head string, retSep string, tail string) {
        // Partition(s, sep) -> (head, sep, tail)
        index := strings.Index(s, sep)
        if index == -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")
    if header == "" {
        // 没有头(xy)丢包. (也有可能粘包分包导致 "...x", 最后一个(注意是一个)字符变成了x, 这时要把前面的包丢弃,只保留一个x)
    } else {
        // do
    }
    

    相关文章

      网友评论

          本文标题:【每天一个Go知识点】(8) go : 字符串操作

          本文链接:https://www.haomeiwen.com/subject/fvlialtx.html