GO语言中计算字符串长度
在GO语言中计算计算字符串长度不能简单直接使用len函数,len函数获取的是字节,一旦字符串中拥有中文,而中文按照UTF-8的编码格式算一个中文算3个字节,那么计算的字符串长度就会和想法有出入,所以使用len计算字符串长度需要慎重考虑!
那么我们该用什么来计算比较正确呢?
utf8.RuneCountInString("str") //使用该函数计算中文和英文
下面来实战演示一下
func main(){
//打印len函数和utf8.RuneCountInString的计算区别
a1:=len("你好")
a:=utf8.RuneCountInString("你好")
fmt.Println(a,":",a1) //2:6
b1:=len("hello world")
b:=utf8.RuneCountInString("hello world")
fmt.Println(b,":",b1) //11:11
}
可以看到计算英文字符串时候用len和RuneCountInString是一样的效果,但是有中文的情况就会如上述所说
len函数计算的Ascall码值
一般游戏中在登录时都需要输入名字,而名字一般有长度限制。考虑到国人习惯使用中文做名字,就需要检测字符串 UTF-8 格式的长度。