[TOC] ## unicode ### IsUpper 是否大写 ``` a :="A" unicode.IsUpper([]rune(a)[0]) // true b :="中" unicode.IsUpper([]rune(b)[0]) // false ``` ### IsLower / IsLetter / IsDigit / IsTitle 用法同 IsUpper ### ToLower 转小写 ``` a :="A" string(unicode.ToLower([]rune(a)[0])) // a ``` ### ToUpper / ToTitle 用法同 ToLower ## utf8 ### RuneCountInString 计算带中文字符串的长度 ``` hw1 := "Hello, 世界" fmt.Println(utf8.RuneCountInString(hw1)) // 9 ``` //or ``` n := 0 for range "Hello, 世界" { n++ } // n = 9 ``` ### DecodeRuneInString 字符串所在字节数 ``` s := "Hello, 世界" for i := 0; i < len(s); { r, size := utf8.DecodeRuneInString(s[i:]) fmt.Printf("%c size:%d\n",r,size ) i += size } /** H size:1 e size:1 l size:1 l size:1 o size:1 , size:1 size:1 世 size:3 界 size:3 */ ``` ### DecodeLastRune 倒着解析