GO语言基础使用方式
最近要处理GO中的字符串由于涉及到中文,截取的时候会出现错误.因此在此做个记录.
首先对于字符串截取使用如下方式:

strIn := "0123456789你好"
str := strIn[0:10]//截取正常:str:0123456789
str = strIn[0:11]//截取异常: str:0123456789�

通过上面的例子可以看出来,对于中文,这样截取字符串是有问题的,会造成乱码,这是因为golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8.我们来看一下他们的长度:

nLen := len(strIn)//nLen = 16
nUtfLen := utf8.RuneCountInString(strIn)//nUtfLen = 12

我们可以通过utf8库中的接口去获取长度,可以观察到两种方式获取到的长度不一样
那么对于有中文汉字的字符串我们如何截取呢?
我们可以通过rune类型来处理带有中文的字符串

runStr := []rune(strIn)//转换成rune类型,处理中文
nRuneLen := len(runStr)//nRuneLen = 12
str = string(runStr[0:11])//str: 0123456789你

这样就ok了.

  • byte 常用来处理ascii字符
  • rune 常用来处理unicode或utf-8字符

Go语言utf8汉字字符串截取处理小记相关推荐

  1. c语言sub函数是什么,C语言中的字符串截取函数

    C语言中的字符串截取函数及应用 /*======================================================== 子数整数 源程序名 num.??? (pas,c, ...

  2. c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数

    /*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...

  3. ***PHP各种编码的汉字字符串截取

    虽然PHP有现成的截取字符串函数substr(),但是这个函数不能对汉字字符串进行截取,要实现这种效果还需要我们自己去编写相应的函数.汉字有多种编码,比如GB2312,UTF-8等,汉字字符串的截取需 ...

  4. c语言中按照“|”字符串截取,shell中取字符串子串的几种方式 截取substr

    echo "123456789" | awk '{print substr($0,5,2)}' 截取 1)awk中函数substr substr(源字符串,开始索引,长度)   开 ...

  5. C语言实现的字符串截取函数

    如题,实现的就是字符串截取函数,传入字符串以及要截取的位置,返回截取后的字符串,函数如下,测试可用. char *cutwords(char *page,int start,int end){char ...

  6. c语言'字符串截取函数,C语言中的字符串截取函数及应用

    /*======================================================== 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 ...

  7. c语言输出汉字字符串,c语言怎么输出字符串

    C语言输出简单的字符串,例如个人信息的相关字符串,包括姓名.出生日期.号码.我们可以通过printf()函数直接打印输出指定信息字符串. 推荐教程:<C视频教程> 下面我们就通过简单的代码 ...

  8. mysql 中文截取_中文字符串截取

    java多字节字符串按字节截取 算法思路 1.先按照实际要截取的字节长度,复制一份字节数组 2.转换回字符串,计算字符长度resLen,并按这个长度截取原字符串 3.计算截取的字符串的字节数是否等于需 ...

  9. 实现中文字符串截取无乱码的方法

    小伙伴们大家好,使用substr()截取中文字符乱码的问题怎么解决呢? 看下面的方法: 方法一: 使用php内置函数mb_substr():      mb_substr( $str, $start, ...

  10. 字符串截取,对数字,英文,汉字都可以

    同长我们在建站的过程中,都会遇到这样的问题,UTF-8编码格式下英文和汉字占用的字节数不同,导致字符串截取过程中会遇到冲突,使用下面这个函数可以完美的解决这个问题. function cc_msubs ...

最新文章

  1. python3.5 mysql 库_Python 3.5 连接Mysql数据库(pymysql 方式)
  2. Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT
  3. Django报错SocialApp matching query does not exist以及Django的SITE_ID = 1的含义
  4. 混合多云架构_混合多云每个人都应避免的3个陷阱(第1部分)
  5. 解决LSP问题导致无法上网
  6. java 异常 最好在action捕获还是service_到底应该在action里面捕捉异常还是在service里面捕捉异常?...
  7. 三步完成博客打赏功能
  8. LinkedList 源码小解
  9. Hive内部表外部表转化分析(装)
  10. 局域网带宽控制解决方案 P2P终结者使用详解
  11. 成人python培训_B2B优选:成人编程爱好者学习
  12. cmd 查询ip 服务器信息,cmd查看ip(cmd查别人ip)
  13. Discuz模板的制作方法
  14. CentOS8桌面图标不显示
  15. webpack 5.5.1 compiled with 1 error in 63 ms
  16. ROT13加密和解密
  17. proxmark3模拟amiibo速通
  18. UVA10306 - e-Coins(二维完全背包)
  19. 2018年6月购书清单
  20. 数据库横向扩展和纵向扩展

热门文章

  1. 用springboot对接支付宝支付接口的详细开发步骤总结
  2. 第三方支付接口现号,第三方支付接口对接,第三方支付接口申请
  3. dell最新计算机如何U盘引导,戴尔台式电脑如何bios设置U盘启动教程
  4. Python requests练习:爬取猫眼电影排行
  5. SWFUpload批量上传插件
  6. 基于netty实现gps jtt808协议接入
  7. linux系统如何使用ocr图片文字识别
  8. vue项目PC端如何适配不同分辨率屏幕
  9. pipreqs 命令 ConnectionResetError(10054, ‘An existing connection was forcibly closed by the remote hos
  10. 觅鹿影视在线解析源码带后台