199
社区成员
发帖
与我相关
我的任务
分享有伙伴可能觉得这很容易,直接len(string)出来的长度不就是里面字符的个数吗?
func main() {
s := `Hello`
fmt.Printf("%d", len(s))//5
}
是的,这个对于字母来说是正确的,那如果夹杂中文呢?
func main() {
s := `Hello 寅恪光潜`
fmt.Printf("%d", len(s))//18
}
这个就统计不准确了,统计出来的是字节数,这里的中文三个字节,所以5+空格+3*4=18,那不是我们想要的。
别急,有这样一个方法:utf8.RuneCountInString
import (
"fmt"
"unicode/utf8"
)
func main() {
s := `Hello 寅恪光潜`
fmt.Printf("%d", utf8.RuneCountInString(s))//10
}
或者转换成字符串数组来统计
func main() {
s := `Hello 寅恪光潜`
s1 := strings.Split(s, "")
fmt.Printf("%T,%s,字符个数:%d", s1, s1, len(s1))
}
//[]string,[H e l l o 寅 恪 光 潜],字符个数:10