3.6.3. utf8包
unicode/utf8包提供了一些用来查询和操作UTF-8编码的字符串和[]byte切片的函数,参见表3.10。之前我们介绍了如何使用utf8.DecodeRuneInString() 和utf.DecodeLastRuneInString()函数来获取字符串的第一个和最后一个字符。
表3.10 utf8包中的函数
需导入unicode/utf8包,变量b是[]byte类型,s是string类型,c是rune类型的Unicode码点
utf8. DecodeLastRune(b) | 返回b的最后一个rune值和它所占用的字节数;如果b不是以一个有效的rune值结尾,返回U+FFFD(字符?的Unicode)和0 |
utf8.DecodeLastRuneInString(s) | 同上,但接受的是字符串作为参数 |
utf8.DecodeRune(b) | 返回b的第一个rune值和它所占用的字节数;如果b不是以一个有效的rune值开头,返回U+FFFD(字符?的Unicode)和0 |
utf8.DecodeRuneInString(s) | 同上,但接受的是字符串作为参数 |
utf8.EncodeRune(b, c) | 以UTF-8字节的形式将c写入b(b必须有足够的空间)并返回写入的字节数 |
utf8.FullRune(b) | 如果b以一个UTF-8编码的rune开头,则返回true |
utf8.FullRuneInString(s) | 如果s以一个UTF-8编码的rune开头,则返回true |
utf8.RuneCount(b) | 返回b中rune的个数,如果b含有非ASCII字符,结果可能小于len(b) |
utf8.RuneCountInString(s) | 返回s中rune的个数,如果s含有非ASCII字符,结果可能小于len(s) |
utf8.RuneLen(c) | 编码c需要的字节数 |
utf8.RuneStart(x) | 如果字节x可以作为rune的第一个字节,则返回true |
utf8.Valid(b) | 如果b中的字节可以表示为合法的UTF-8编码的rune,则返回true |
utf8.ValidString(s) | 如果s中的字节可以表示为合法的UTF-8编码的rune,则返回true |