• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang中文字符串截取函数实现原理

    在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码。

    例如:

    想要截取前四个字

    name := "我是胡八一"
    fmt.Println("name[:4] = ",name[:4])

    执行后得到的结果会是这样的:

    name[:4] = 我?

    解决方法:
    先将其转为[]rune,再截取后,转会string

    nameRune := []rune(name)
    fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4]))

    运行结果:

    string(nameRune[:4]) =  我是胡八

    好了弄懂了原理我们来写一个完整的Golang中文字符串截取函数

    func SubString(str string, begin, length int) string {
      fmt.Println("Substring =", str)
      rs := []rune(str)
      lth := len(rs)
      fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
      if begin  0 {
        begin = 0
      }
      if begin >= lth {
        begin = lth
      }
      end := begin + length
    
      if end > lth {
        end = lth
      }
      fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
      return string(rs[begin:end])
    }

    实现Golang中文字符串截取函数很简单利用golang原理语句就可实现

    您可能感兴趣的文章:
    • golang 中获取字符串个数的方法
    • 简单谈谈Golang中的字符串与字节数组
    • Golang 中整数转字符串的方法
    • Golang 统计字符串字数的方法示例
    • Golang实现字符串倒序的几种解决方案
    • Golang 语言高效使用字符串的方法
    上一篇:Go语言中slice作为参数传递时遇到的一些“坑”
    下一篇:Mac上Go环境和VS Code的正确安装与配置方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang中文字符串截取函数实现原理 Golang,中文,字符串,截取,