美文网首页
GO学习笔记(3) - 字符串操作

GO学习笔记(3) - 字符串操作

作者: 卡门001 | 来源:发表于2021-06-29 21:17 被阅读0次

字符长度

len得到字符长度 ,utf8.RuneCountInString字符串长度

var s string
s="Yes问天地之悠悠!"
fmt.Println("len(s)",len(s))
fmt.Println("len(s)",len([]byte(s)))
fmt.Println("len([]rune(s))",len([]rune(s)))
fmt.Println("len(s)",utf8.RuneCountInString(s))

字符转数组与字节

var bytes = []byte(s)
fmt.Println(bytes)
var runes = []rune(s)
fmt.Println(runes)

字符编码

go默认的编码UTF-8,每个字符占3个字节
Golang 内建支持 UTF-8 编码,支持转化到其它编码,例如:GBK编码,可以使用 Go 官方的 [golang.org/x/text] 包进行转换,代码如下:

// transform GBK bytes to UTF-8 bytes
func GbkToUtf8(str []byte) (b []byte, err error) {
    r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder())
    b, err = ioutil.ReadAll(r)
    if err != nil {
        return
    }
    return
}

// transform UTF-8 bytes to GBK bytes
func Utf8ToGbk(str []byte) (b []byte, err error) {
    r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewEncoder())
    b, err = ioutil.ReadAll(r)
    if err != nil {
        return
    }
    return
}

rune

Unicode code points ;可以简单理解为Unicode 用来表示每一个字符的 key,例如:汉字的“字”的十进制使用23383表示,这就是一个编码点。

相关文章

网友评论

      本文标题:GO学习笔记(3) - 字符串操作

      本文链接:https://www.haomeiwen.com/subject/gcwkultx.html