在Go语言中,咱们要统计字符串中字符的个数,咱们必定会想到用utf8.RuneCountInString()
然而,这里咱们可能会碰到一个陷阱
咱们来看一段代码
func main() { data := "我" println(utf8.RuneCountInString(data)) data = "e" println(utf8.RuneCountInString(data))}
在第3行代码中,输入后果是1,我置信大家都能想得到
在第6行代码中,你是否会感觉它会输入是1?
其实它的输入后果是 2
是不是感到很奇怪?
因为这是一个组合字符(Combining Diacritical Marks)
e由两个字符组成别离是e
和'
https://stackoverflow.com/que...
咱们肉眼看起来像是一个字符,其实它是由两个字符组成
e和é 这两个字符肉眼看起来仿佛是一样的
理论状况是前者蕴含了两个字符,后者只是一个字符
如果想解决这个问题,能够应用golang.org/x/text/unicode/norm这个包解决下字符
https://www.unicode.org/repor...
以上就是本期内容
我是红豆,知易行难
咱们下期间见