Golang中文字符串截取函数实现原理
Go  /  管理员 发布于 7年前   201
在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原理语句就可实现
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号