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