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

本文对比了Golang与Python中常用的字符串操作方法,包括字符串的分割、连接、替换等,并介绍了Golang中实现类似Python str.partition的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
    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使用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值