golang字符串截取

1. 截取普通字符串 - 直接当成数组切片

str := "XHelloWorldX"
content := str[1 : len(str)-1]
fmt.Println(content)

或者 - 转换为数组(有声明内部变量)切片

s := "abcdefg"
s = string([]byte(s)[:3])
fmt.Println(s) //得到 "abc"

2. 截取带中文字符串

一个中文字符肯定不止一个字节,难道我还得遍历每个字节,判断编码,那也太麻烦了吧。 我们不需要考虑那么多,除了byte还有另外一个类型rune,使用它完全不用考虑unicode字节问题,一个中文就只占一个数组下标。

str := "a中文cd"
str = string([]rune(str)[:4])
fmt.Println(str)

最好的截取方式是:

   string([]rune(str)[2:4])

左闭右开哦

也就是上面截取的字符数组的下标是  2 和 3 ,也就是   文c

3. 截取字符串时候,推荐直接用 [ ]rune 截取就可以了,rune 是 int32 ,而 byte 是 uint8 , rune 可以标识4个字节而 utf8 编码表 4 个字节已经可以表示所有字符了

阮一峰 字符编码笔记:ASCII,Unicode 和 UTF-8 

https://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

 转载自:

https://juejin.im/post/5c8a45dee51d455bb15c2045
https://blog.csdn.net/zf766045962/article/details/90383377

 

posted @ 2020-03-24 14:37  许伟强  阅读(15478)  评论(0编辑  收藏  举报