1.2.2 中文字符串的截取
Go语言中,可以使用
len()函数获取字符串的字节长度,英文占1字节长度,中文占3字节长度可以使用
变量名[n]获取字符串第n+1个字节,返回这个字节对应的Unicode码值(uint8类型),n的取值范围是[0, len(n) - 1]因为中文占3个字节的长度,所以截取中文时候,可能造成中间截取导致乱码的情况,解决办法:
先将字符串转换成
[]rune类型,然后在截取,返回字符串类型func main() { // 声明一个字符串变量str str := "在Go中可以通过切片截取一个数组或字符串" // 打印字符串长度 fmt.Println("字符串长度:", utf8.RuneCountInString(str)) // 打印字节长度 fmt.Println("字节长度:", len(str)) // 获取字符串的前10个字符 str1 := str[0:9] // 打印 fmt.Println("前10个字符:", str1) // 将字符串转化为[]rune类型 nameRune := []rune(str) // 打印转换后的长度 fmt.Println("换后的长度:", len(nameRune)) // 打印转换后的字符串的前10个字符 fmt.Println("换后的字符串的前10个字符:", string(nameRune[0:9])) }结果:
字符串长度: 20 字节长度: 56 前10个字符: 在Go中� 换后的长度: 20 换后的字符串的前10个字符: 在Go中可以通过切
Last updated