1.2.2 中文字符串的截取

  1. Go语言中,可以使用len()函数获取字符串的字节长度,英文占1字节长度,中文占3字节长度

  2. 可以使用变量名[n]获取字符串第n+1个字节,返回这个字节对应的Unicode码值(uint8类型),n的取值范围是[0, len(n) - 1]

  3. 因为中文占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