字符串是最常用的处理文本信息的数据结构,Go语言提供了强大的字符串操作库strings,里面含盖了各种方法。比如分隔字符串,大小写转换之类的,不做详细讲解,其它语言有的,Go语言基本都有,实际开发 时可以直接呼出strings进行查询。
这里主要说一下字符串与rune,我们之前在Go语言的内建变量讲到过rune,rune是Go语言的字符类型。
比如说,我们处理中文字符串时。
s := "Yes你在干吗呢?"
fmt.Printf("%s\n",[]byte(s))
for _,b := range []byte(s){
//每个中文是三字节
fmt.Printf("%X ",b)
}
输出结果是59 65 73 E4 BD A0 E5 9C A8 E5 B9 B2 E5 90 97 E5 91 A2 EF BC 9F 21
每个中文是一个三字节的ASCII码,如果我们想逐一得到每个字符,其中一种方法是通过utf8类进行转码
fmt.Println("rune count:",utf8.RuneCountInString(s))
bytes := []byte(s)
for len(bytes)>0{
//解码
ch, size := utf8.DecodeRune(bytes)
bytes = bytes[size:]
fmt.Printf("%c ",ch)
}
另一种方法是,我们把字符串转成字符数组,得到的就是转码后的utf-8的字符集
for i,ch := range []rune(s){
//rune是四字节
fmt.Printf("%d %c",i,ch)
}