分享
  1. 首页
  2. 文章

golang -- 字符串操作

flyking · · 9293 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

相关包有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 -- 字符串操作

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
9293 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏