golang -- 字符串操作

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

    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
}





本文来自:开源中国博客

感谢作者:flyking

查看原文:golang -- 字符串操作

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。